Explorar el Código

Merge branch 'trunk' into branch-3.0-ams

Aravindan Vijayan hace 8 años
padre
commit
397af778b0
Se han modificado 100 ficheros con 13358 adiciones y 5517 borrados
  1. 3 0
      .gitignore
  2. 1 1
      ambari-admin/pom.xml
  3. BIN
      ambari-admin/src/main/resources/ui/admin-web/app/assets/fonts/Roboto-Regular-webfont.eot
  4. 7606 0
      ambari-admin/src/main/resources/ui/admin-web/app/assets/fonts/Roboto-Regular-webfont.svg
  5. BIN
      ambari-admin/src/main/resources/ui/admin-web/app/assets/fonts/Roboto-Regular-webfont.ttf
  6. BIN
      ambari-admin/src/main/resources/ui/admin-web/app/assets/fonts/Roboto-Regular-webfont.woff
  7. 45 52
      ambari-admin/src/main/resources/ui/admin-web/app/index.html
  8. 3 2
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/app.js
  9. 46 52
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/AppCtrl.js
  10. 0 106
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/NavbarCtrl.js
  11. 68 0
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/SideNavCtrl.js
  12. 195 211
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/CreateViewInstanceCtrl.js
  13. 141 220
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/ViewsListCtrl.js
  14. 106 0
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/clusters/ClusterInformationCtrl.js
  15. 0 97
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/clusters/ClustersManageAccessCtrl.js
  16. 0 58
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/clusters/ExportBlueprintCtrl.js
  17. 0 351
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/clusters/UserAccessListCtrl.js
  18. 0 65
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/groups/GroupsCreateCtrl.js
  19. 0 106
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/groups/GroupsListCtrl.js
  20. 27 1
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/stackVersions/StackVersionsCreateCtrl.js
  21. 26 1
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/stackVersions/StackVersionsEditCtrl.js
  22. 120 0
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/userManagement/GroupCreateCtrl.js
  23. 115 47
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/userManagement/GroupEditCtrl.js
  24. 167 0
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/userManagement/GroupsListCtrl.js
  25. 113 0
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/userManagement/UserCreateCtrl.js
  26. 364 0
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/userManagement/UserEditCtrl.js
  27. 23 0
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/userManagement/UserManagementCtrl.js
  28. 177 0
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/userManagement/UsersListCtrl.js
  29. 0 75
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/users/UsersCreateCtrl.js
  30. 0 122
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/users/UsersListCtrl.js
  31. 0 290
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/users/UsersShowCtrl.js
  32. 27 24
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/i18n.config.js
  33. 64 97
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/routes.js
  34. 51 39
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/Cluster.js
  35. 51 93
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/Group.js
  36. 2 3
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/RoleDetailsModal.js
  37. 16 1
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/Stack.js
  38. 15 5
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/User.js
  39. 5 35
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/View.js
  40. 269 0
      ambari-admin/src/main/resources/ui/admin-web/app/scripts/theme/bootstrap-ambari.js
  41. 58 0
      ambari-admin/src/main/resources/ui/admin-web/app/styles/cluster-information.css
  42. 77 619
      ambari-admin/src/main/resources/ui/admin-web/app/styles/main.css
  43. 1518 0
      ambari-admin/src/main/resources/ui/admin-web/app/styles/theme/bootstrap-ambari.css
  44. 72 0
      ambari-admin/src/main/resources/ui/admin-web/app/styles/toggle-switch.css
  45. 200 0
      ambari-admin/src/main/resources/ui/admin-web/app/styles/top-nav.css
  46. 43 0
      ambari-admin/src/main/resources/ui/admin-web/app/styles/user-management.css
  47. 105 0
      ambari-admin/src/main/resources/ui/admin-web/app/styles/views.css
  48. 0 204
      ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/create.html
  49. 16 21
      ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/edit.html
  50. 0 110
      ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/listTable.html
  51. 0 117
      ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/listUrls.html
  52. 220 92
      ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/modals/create.html
  53. 0 138
      ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/modals/edit.html
  54. 151 0
      ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/viewsList.html
  55. 7 7
      ambari-admin/src/main/resources/ui/admin-web/app/views/authentication/main.html
  56. 87 0
      ambari-admin/src/main/resources/ui/admin-web/app/views/clusters/clusterInformation.html
  57. 0 63
      ambari-admin/src/main/resources/ui/admin-web/app/views/clusters/manageAccess.html
  58. 0 102
      ambari-admin/src/main/resources/ui/admin-web/app/views/clusters/userAccessList.html
  59. 0 43
      ambari-admin/src/main/resources/ui/admin-web/app/views/groups/create.html
  60. 0 98
      ambari-admin/src/main/resources/ui/admin-web/app/views/groups/edit.html
  61. 0 126
      ambari-admin/src/main/resources/ui/admin-web/app/views/leftNavbar.html
  62. 4 2
      ambari-admin/src/main/resources/ui/admin-web/app/views/loginActivities/homeDirectory.html
  63. 4 2
      ambari-admin/src/main/resources/ui/admin-web/app/views/loginActivities/loginMessage.html
  64. 0 96
      ambari-admin/src/main/resources/ui/admin-web/app/views/main.html
  65. 8 6
      ambari-admin/src/main/resources/ui/admin-web/app/views/modals/AddVersionModal.html
  66. 3 8
      ambari-admin/src/main/resources/ui/admin-web/app/views/remoteClusters/list.html
  67. 99 0
      ambari-admin/src/main/resources/ui/admin-web/app/views/sideNav.html
  68. 11 11
      ambari-admin/src/main/resources/ui/admin-web/app/views/stackVersions/list.html
  69. 28 27
      ambari-admin/src/main/resources/ui/admin-web/app/views/stackVersions/stackVersionPage.html
  70. 2 4
      ambari-admin/src/main/resources/ui/admin-web/app/views/urls/create.html
  71. 2 4
      ambari-admin/src/main/resources/ui/admin-web/app/views/urls/edit.html
  72. 122 0
      ambari-admin/src/main/resources/ui/admin-web/app/views/userManagement/groupEdit.html
  73. 37 22
      ambari-admin/src/main/resources/ui/admin-web/app/views/userManagement/groupsList.html
  74. 17 21
      ambari-admin/src/main/resources/ui/admin-web/app/views/userManagement/main.html
  75. 0 0
      ambari-admin/src/main/resources/ui/admin-web/app/views/userManagement/modals/changePassword.html
  76. 87 0
      ambari-admin/src/main/resources/ui/admin-web/app/views/userManagement/modals/groupCreate.html
  77. 152 0
      ambari-admin/src/main/resources/ui/admin-web/app/views/userManagement/modals/userCreate.html
  78. 39 17
      ambari-admin/src/main/resources/ui/admin-web/app/views/userManagement/userEdit.html
  79. 58 35
      ambari-admin/src/main/resources/ui/admin-web/app/views/userManagement/usersList.html
  80. 0 82
      ambari-admin/src/main/resources/ui/admin-web/app/views/users/create.html
  81. 8 5
      ambari-admin/src/main/resources/ui/admin-web/bower.json
  82. 5 5
      ambari-admin/src/main/resources/ui/admin-web/gulpfile.js
  83. 4 4
      ambari-admin/src/main/resources/ui/admin-web/package.json
  84. 5 9
      ambari-admin/src/main/resources/ui/admin-web/test/unit/controllers/AppCtrl_test.js
  85. 102 0
      ambari-admin/src/main/resources/ui/admin-web/test/unit/controllers/ClusterInformationCtrl_test.js
  86. 0 135
      ambari-admin/src/main/resources/ui/admin-web/test/unit/controllers/CreateViewInstanceCtrl.js
  87. 0 820
      ambari-admin/src/main/resources/ui/admin-web/test/unit/controllers/clusters/UserAccessListCtrl_test.js
  88. 6 6
      ambari-admin/src/main/resources/ui/admin-web/test/unit/controllers/userManagement/GroupsListCtrl_test.js
  89. 9 48
      ambari-admin/src/main/resources/ui/admin-web/test/unit/controllers/userManagement/UsersListCtrl_test.js
  90. 9 2
      ambari-admin/src/main/resources/ui/admin-web/test/unit/services/Utility_test.js
  91. 2 2
      ambari-agent/pom.xml
  92. 4 1
      ambari-agent/src/main/python/ambari_agent/ActionQueue.py
  93. 0 3
      ambari-agent/src/main/python/ambari_agent/AmbariAgent.py
  94. 3 71
      ambari-agent/src/main/python/ambari_agent/AmbariConfig.py
  95. 5 1
      ambari-agent/src/main/python/ambari_agent/CustomServiceOrchestrator.py
  96. 2 3
      ambari-agent/src/main/python/ambari_agent/FileCache.py
  97. 76 54
      ambari-agent/src/main/python/ambari_agent/Hardware.py
  98. 3 5
      ambari-agent/src/main/python/ambari_agent/Heartbeat.py
  99. 42 41
      ambari-agent/src/main/python/ambari_agent/HostInfo.py
  100. 0 71
      ambari-agent/src/main/python/ambari_agent/ProcessHelper.py

+ 3 - 0
.gitignore

@@ -26,3 +26,6 @@ rebel.xml
 rebel-remote.xml
 out
 createDDL.jdbc
+/contrib/views/storm/src/main/resources/ui/node_modules/
+/contrib/views/storm/src/main/resources/ui/public/
+/contrib/views/storm/src/main/resources/ui/npm-debug.log

+ 1 - 1
ambari-admin/pom.xml

@@ -192,7 +192,7 @@
             <exclude>src/main/resources/ui/admin-web/bower_components/**</exclude>
             <exclude>src/main/resources/ui/admin-web/dist/**</exclude>
             <exclude>src/main/resources/ui/admin-web/node/**</exclude>
-            <exclude>src/main/resources/ui/admin-web/app/assets/data/**</exclude>
+            <exclude>src/main/resources/ui/admin-web/app/assets/**</exclude>
             <exclude>src/main/resources/ui/admin-web/node_modules/**</exclude>
             <exclude>src/main/resources/ui/admin-web/app/bower_components/**</exclude>
             <exclude>src/main/resources/ui/admin-web/test/bower_components/**</exclude>

BIN
ambari-admin/src/main/resources/ui/admin-web/app/assets/fonts/Roboto-Regular-webfont.eot


+ 7606 - 0
ambari-admin/src/main/resources/ui/admin-web/app/assets/fonts/Roboto-Regular-webfont.svg

@@ -0,0 +1,7606 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
+<svg xmlns="http://www.w3.org/2000/svg">
+<metadata></metadata>
+<defs>
+<font id="robotoregular" horiz-adv-x="1164" >
+<font-face units-per-em="2048" ascent="1638" descent="-410" />
+<missing-glyph horiz-adv-x="509" />
+<glyph unicode="fi" horiz-adv-x="1140" d="M28 936v146h170v117q0 182 106.5 282t295.5 100q67 0 132 -15.5t153 -45.5l-34 -160q-53 21 -113 36t-123 15q-117 0 -168.5 -52t-51.5 -160v-117h215v-146h-215v-936h-197v936h-170zM783 0v1082h198v-1082h-198z" />
+<glyph unicode=" "  horiz-adv-x="509" />
+<glyph unicode="&#x09;" horiz-adv-x="509" />
+<glyph unicode="&#xa0;" horiz-adv-x="509" />
+<glyph unicode="!" horiz-adv-x="539" d="M171 0v204h198v-204h-198zM171 478v978h197v-978h-197z" />
+<glyph unicode="&#x22;" horiz-adv-x="668" d="M80 1040l1 240v280h197v-270l-101 -250h-97zM389 1040l1 248v272h197v-270l-101 -250h-97z" />
+<glyph unicode="#" horiz-adv-x="1276" d="M70 410v140h264l68 348h-256v142h284l82 416h151l-82 -416h255l82 416h151l-82 -416h199v-142h-226l-68 -348h219v-140h-247l-80 -410h-152l80 410h-255l-80 -410h-151l80 410h-236zM485 550h255l68 348h-255z" />
+<glyph unicode="$" horiz-adv-x="1153" d="M114 424l2 5h190q0 -154 77.5 -219.5t190.5 -65.5q129 0 201.5 61.5t72.5 170.5q0 89 -64 153t-210 114q-202 61 -305 163t-103 272q0 165 94.5 269t260.5 125v221h158v-222q168 -24 260.5 -143.5t92.5 -320.5h-196q0 136 -63 220t-175 84q-118 0 -176.5 -61.5 t-58.5 -168.5q0 -97 60.5 -157t218.5 -114q205 -66 304 -164.5t99 -267.5q0 -172 -103 -273.5t-283 -120.5v-192h-157v191q-172 18 -282 125.5t-106 315.5z" />
+<glyph unicode="%" horiz-adv-x="1498" d="M104 1099v77q0 127 82 214t219 87t219 -86.5t82 -214.5v-77q0 -127 -81.5 -213t-217.5 -86q-138 0 -220.5 86t-82.5 213zM250 1099q0 -74 40.5 -125.5t116.5 -51.5q73 0 113 51t40 126v77q0 74 -40.5 126.5t-114.5 52.5q-75 0 -115 -52.5t-40 -126.5v-77zM349 177 l711 1138l109 -67l-711 -1138zM809 279v78q0 127 82 213.5t219 86.5q136 0 218.5 -86.5t82.5 -213.5v-78q0 -128 -82 -214t-217 -86q-138 0 -220.5 86t-82.5 214zM955 279q0 -75 40.5 -126.5t116.5 -51.5q73 0 113 51.5t40 126.5v78q0 74 -41 126t-114 52q-74 0 -114.5 -52 t-40.5 -126v-78z" />
+<glyph unicode="&#x26;" horiz-adv-x="1276" d="M64 392q0 122 70.5 213.5t210.5 183.5q-78 99 -116 176.5t-38 159.5q0 169 97.5 260.5t268.5 91.5q158 0 257 -91t99 -219q0 -98 -52.5 -169.5t-155.5 -146.5l-109 -80l340 -409q41 65 64 144t23 167h176q0 -132 -39 -244t-113 -201l185 -223l-2 -5h-229l-85 102 q-80 -60 -177 -91.5t-201 -31.5q-217 0 -345.5 115t-128.5 298zM261 392q0 -113 71 -186t206 -73q72 0 142 24.5t132 70.5l-361 435l-40 -29q-91 -68 -120.5 -130t-29.5 -112zM388 1127q0 -53 27 -110.5t81 -125.5l138 95q57 38 77.5 82.5t20.5 98.5q0 61 -48.5 108 t-126.5 47q-81 0 -125 -56.5t-44 -138.5z" />
+<glyph unicode="'" horiz-adv-x="359" d="M80 1055l1 265v240h197v-223l-101 -282h-97z" />
+<glyph unicode="(" horiz-adv-x="679" d="M132 582v9q0 394 159 673t334 372l6 -1l38 -116q-137 -107 -238.5 -343t-101.5 -583v-13q0 -347 101 -583t239 -352l-38 -108h-6q-175 93 -334 371.5t-159 673.5z" />
+<glyph unicode=")" horiz-adv-x="687" d="M6 -355q135 105 237.5 345.5t102.5 589.5v13q0 342 -105.5 583.5t-234.5 351.5l38 108h6q174 -93 333.5 -372t159.5 -673v-9q0 -395 -159.5 -673.5t-333.5 -371.5h-6z" />
+<glyph unicode="*" horiz-adv-x="884" d="M28 1071l49 154l296 -111l-10 342h161l-10 -348l293 110l48 -156l-302 -89l193 -270l-131 -96l-181 287l-176 -279l-132 93l198 274z" />
+<glyph unicode="+" horiz-adv-x="1162" d="M78 605v178h402v423h197v-423h399v-178h-399v-459h-197v459h-402z" />
+<glyph unicode="," horiz-adv-x="404" d="M48 -258l70 316v163h197v-173l-150 -306h-117z" />
+<glyph unicode="-" horiz-adv-x="561" d="M35 538v154h490v-154h-490z" />
+<glyph unicode="." horiz-adv-x="548" d="M161 0v202h197v-202h-197z" />
+<glyph unicode="/" horiz-adv-x="850" d="M16 -125l608 1581h167l-607 -1581h-168z" />
+<glyph unicode="0" horiz-adv-x="1154" d="M113 555v345q0 278 124.5 427.5t338.5 149.5q215 0 339.5 -149.5t124.5 -427.5v-345q0 -279 -123.5 -427.5t-338.5 -148.5t-340 149t-125 427zM310 515q0 -189 69 -285.5t199 -96.5t197.5 96t67.5 286v427q0 189 -68.5 284.5t-198.5 95.5t-198 -95.5t-68 -284.5v-427z " />
+<glyph unicode="1" horiz-adv-x="1153" d="M186 1260v142l495 54v-1456h-197v1264z" />
+<glyph unicode="2" horiz-adv-x="1153" d="M97 1033q-5 188 125 316t360 128q196 0 312.5 -114.5t116.5 -291.5q0 -119 -70.5 -238.5t-197.5 -256.5l-383 -417l2 -5h700v-154h-944v135l477 530q128 143 173.5 227t45.5 172q0 109 -63.5 183.5t-168.5 74.5q-151 0 -222.5 -77.5t-71.5 -217.5h-189z" />
+<glyph unicode="3" horiz-adv-x="1153" d="M100 378l3 6h188q0 -115 70.5 -183t193.5 -68q125 0 196 68t71 201q0 135 -63 199t-199 64h-172v154h172q131 0 185.5 65.5t54.5 182.5q0 125 -62 190t-183 65q-115 0 -184.5 -67.5t-69.5 -179.5h-189l-2 6q-5 165 119.5 280.5t325.5 115.5q202 0 322 -107.5t120 -306.5 q0 -90 -54.5 -179.5t-163.5 -136.5q131 -43 185.5 -135t54.5 -206q0 -199 -130.5 -313t-333.5 -114q-199 0 -329.5 107.5t-125.5 291.5z" />
+<glyph unicode="4" horiz-adv-x="1153" d="M55 336v111l642 1009h208v-966h201v-154h-201v-336h-196v336h-654zM265 490h444v683l-6 1l-19 -50z" />
+<glyph unicode="5" horiz-adv-x="1153" d="M157 377l2 6h178q0 -119 68.5 -184.5t177.5 -65.5q125 0 194 88t69 241q0 140 -70 230t-193 90q-116 0 -168 -35t-76 -107l-164 17l84 799h729v-175h-562l-48 -409q46 34 102.5 56.5t130.5 24.5q201 2 316.5 -131t115.5 -358q0 -219 -117.5 -352t-342.5 -133 q-185 0 -308 101t-118 297z" />
+<glyph unicode="6" horiz-adv-x="1153" d="M132 571v278q0 280 156 454t387 174q75 0 148.5 -17t121.5 -43l-42 -151q-49 25 -102.5 40.5t-125.5 15.5q-156 0 -251.5 -125t-95.5 -326v-23q64 56 146.5 87.5t177.5 31.5q195 0 311 -135t116 -342q0 -226 -123.5 -368.5t-329.5 -142.5q-214 0 -354 155t-140 437z M328 552q0 -201 85 -310t213 -109q121 0 188.5 102.5t67.5 254.5q0 144 -72.5 237t-201.5 93q-101 0 -172 -41t-108 -109v-118z" />
+<glyph unicode="7" horiz-adv-x="1153" d="M77 1301v155h985v-155q-264 -314 -356.5 -556.5t-133.5 -587.5l-16 -157h-197l16 157q42 344 163 615t331 529h-792z" />
+<glyph unicode="8" horiz-adv-x="1153" d="M102 394q0 123 74 217t200 138q-109 42 -171 127.5t-62 199.5q0 192 118.5 296.5t313.5 104.5q192 0 313.5 -104.5t121.5 -296.5q0 -114 -64 -199.5t-173 -127.5q126 -44 201.5 -138t75.5 -217q0 -202 -131.5 -308.5t-341.5 -106.5q-214 0 -344.5 106.5t-130.5 308.5z M299 398q0 -124 76 -194.5t202 -70.5q123 0 200 71t77 194q0 120 -79 197t-200 77q-123 0 -199.5 -77t-76.5 -197zM340 1072q0 -111 65.5 -178t171.5 -67q104 0 170 67t66 178q0 108 -67.5 179t-170.5 71q-105 0 -170 -68.5t-65 -181.5z" />
+<glyph unicode="9" horiz-adv-x="1153" d="M83 978q0 219 131.5 359t319.5 140q228 0 359.5 -142.5t131.5 -419.5v-347q0 -285 -142.5 -437t-371.5 -152q-77 0 -156.5 14.5t-142.5 44.5l30 151q59 -31 122.5 -43.5t146.5 -12.5q144 0 230.5 109t86.5 324v66q-49 -71 -122.5 -107.5t-163.5 -36.5q-211 0 -335 130.5 t-124 359.5zM280 978q0 -150 70.5 -243t191.5 -93q109 0 181.5 47t104.5 120v126q0 191 -73.5 289t-214.5 98q-108 0 -184 -96.5t-76 -247.5z" />
+<glyph unicode=":" horiz-adv-x="517" d="M161 0v202h197v-202h-197zM161 876v202h197v-202h-197z" />
+<glyph unicode=";" horiz-adv-x="525" d="M99 -258l70 316v163h197v-173l-150 -306h-117zM162 876v202h197v-202h-197z" />
+<glyph unicode="&#x3c;" horiz-adv-x="1040" d="M71 466v149l816 378v-201l-559 -233l-85 -18v-6l85 -19l559 -228v-201z" />
+<glyph unicode="=" horiz-adv-x="1153" d="M152 407v164h834v-164h-834zM152 823v164h834v-164h-834z" />
+<glyph unicode="&#x3e;" horiz-adv-x="1072" d="M136 87v196l598 238l85 17v6l-85 20l-598 234v195l856 -378v-149z" />
+<glyph unicode="?" horiz-adv-x="974" d="M61 1122q-3 161 113.5 258t296.5 97q197 0 306 -100.5t109 -280.5q0 -129 -70.5 -236t-186.5 -219q-54 -54 -65.5 -97t-11.5 -134h-197q1 145 25 201t126 148q99 117 141 180t42 152q0 106 -56.5 163t-161.5 57q-91 0 -155 -49.5t-64 -145.5h-188zM353 0v208h206v-208 h-206z" />
+<glyph unicode="@" horiz-adv-x="1833" d="M114 478q19 423 249 688t602 265q379 0 581.5 -250t185.5 -679q-9 -214 -120 -368.5t-332 -154.5q-73 0 -126 41.5t-76 117.5q-50 -80 -122 -119.5t-168 -39.5q-125 0 -194 120.5t-51 316.5q23 259 137.5 415.5t279.5 156.5q105 0 169 -26t139 -80l-4 -4h6l-51 -585 q-9 -110 21.5 -151.5t81.5 -41.5q123 0 197 113.5t82 288.5q16 382 -144 595.5t-496 213.5q-308 0 -495.5 -231t-202.5 -602q-18 -376 150 -594.5t482 -218.5q88 0 178.5 21.5t152.5 56.5l38 -107q-67 -42 -170.5 -65.5t-202.5 -23.5q-380 0 -587.5 249.5t-189.5 681.5z M720 416q-11 -142 21.5 -216t106.5 -74q64 0 117 24.5t97 87.5q-1 12 -0.5 25.5t2.5 29.5l47 538q-26 12 -54.5 19t-59.5 7q-125 0 -191 -109.5t-86 -331.5z" />
+<glyph unicode="A" horiz-adv-x="1326" d="M20 0l563 1456h169l554 -1456h-201l-136 375h-610l-138 -375h-201zM420 540h490l-240 663h-6z" />
+<glyph unicode="B" horiz-adv-x="1309" d="M180 0v1456h475q228 0 357 -98.5t129 -295.5q0 -97 -62 -173.5t-163 -113.5q132 -28 207.5 -129t75.5 -235q0 -200 -129.5 -305.5t-351.5 -105.5h-538zM377 154h341q134 0 209 66.5t75 188.5q0 128 -62.5 201t-192.5 73h-370v-529zM377 837h319q110 0 179 60.5t69 168.5 q0 118 -74.5 176.5t-214.5 58.5h-278v-464z" />
+<glyph unicode="C" horiz-adv-x="1297" d="M118 598v259q0 269 155.5 444.5t402.5 175.5q247 1 393 -131q142 -128 142 -337v-12l-2 -6h-189q0 153 -90 242t-254 89q-165 0 -263 -133t-98 -330v-261q0 -199 98 -332t263 -133q164 0 254 88.5t90 244.5h189l2 -6v-11q0 -198 -144 -332q-148 -138 -391 -138 q-247 0 -402.5 175t-155.5 444z" />
+<glyph unicode="D" horiz-adv-x="1349" d="M180 0v1456h447q286 0 459 -175.5t173 -453.5v-199q0 -279 -173 -453.5t-459 -174.5h-447zM377 154h250q202 0 318.5 133t116.5 341v201q0 206 -116.5 339t-318.5 133h-250v-1147z" />
+<glyph unicode="E" horiz-adv-x="1197" d="M180 0v1456h955v-155h-758v-471h667v-155h-667v-521h769v-154h-966z" />
+<glyph unicode="F" horiz-adv-x="1193" d="M180 0v1456h963v-155h-766v-502h664v-155h-664v-644h-197z" />
+<glyph unicode="G" horiz-adv-x="1396" d="M120 578v300q0 265 159 432t410 167q250 0 393 -123t146 -317l-2 -6h-188q-9 127 -96.5 209t-252.5 82q-167 0 -269 -125t-102 -317v-302q0 -194 114 -319.5t290 -125.5q124 0 203 33t113 75v331h-319v155h516v-534q-52 -80 -180.5 -147t-332.5 -67q-261 0 -431.5 167 t-170.5 432z" />
+<glyph unicode="H" horiz-adv-x="1461" d="M180 0v1456h197v-658h707v658h197v-1456h-197v643h-707v-643h-197z" />
+<glyph unicode="I" horiz-adv-x="579" d="M190 0v1456h198v-1456h-198z" />
+<glyph unicode="J" horiz-adv-x="1130" d="M66 395l2 6h189q0 -135 68.5 -201.5t193.5 -66.5q109 0 178 73.5t69 196.5v1053h197v-1053q0 -195 -123.5 -309.5t-320.5 -114.5q-210 0 -334 107q-119 102 -119 293v16z" />
+<glyph unicode="K" horiz-adv-x="1317" d="M180 0v1456h197v-644h152l521 644h218l3 -5l-565 -699l606 -747l-3 -5h-235l-527 657h-170v-657h-197z" />
+<glyph unicode="L" horiz-adv-x="1106" d="M180 0v1456h197v-1302h689v-154h-886z" />
+<glyph unicode="M" horiz-adv-x="1799" d="M180 0v1456h252l464 -1183h6l464 1183h252v-1456h-197v576l20 592l-5 1l-472 -1169h-131l-470 1166l-5 -1l19 -589v-576h-197z" />
+<glyph unicode="N" horiz-adv-x="1461" d="M180 0v1456h197l701 -1124l6 2v1122h197v-1456h-197l-701 1126l-6 -2v-1124h-197z" />
+<glyph unicode="O" horiz-adv-x="1396" d="M113 598v259q0 266 159.5 443t414.5 177q264 0 429.5 -176.5t165.5 -443.5v-259q0 -267 -165.5 -443t-429.5 -176q-255 0 -414.5 176t-159.5 443zM310 598q0 -202 102.5 -330t274.5 -128q183 0 290.5 127.5t107.5 330.5v261q0 200 -108 328t-290 128q-172 0 -274.5 -128 t-102.5 -328v-261z" />
+<glyph unicode="P" horiz-adv-x="1312" d="M180 0v1456h557q233 0 362 -120t129 -316q0 -199 -129 -317.5t-362 -118.5h-360v-584h-197zM377 738h360q148 0 221 79.5t73 200.5t-73.5 202t-220.5 81h-360v-563z" />
+<glyph unicode="Q" horiz-adv-x="1396" d="M113 598v259q0 266 159.5 443t414.5 177q264 0 429.5 -176.5t165.5 -443.5v-259q0 -142 -50 -263t-140 -205l247 -233l-135 -129l-276 257q-56 -23 -116.5 -34.5t-124.5 -11.5q-255 0 -414.5 176t-159.5 443zM310 598q0 -202 102.5 -330t274.5 -128q183 0 290.5 127.5 t107.5 330.5v261q0 200 -108 328t-290 128q-172 0 -274.5 -128t-102.5 -328v-261z" />
+<glyph unicode="R" horiz-adv-x="1357" d="M180 0v1455h527q239 0 365 -106t126 -308q0 -112 -58.5 -195t-170.5 -132q120 -39 172.5 -126.5t52.5 -216.5v-137q0 -68 15 -122t52 -88v-24h-203q-39 34 -50 100t-11 136v133q0 118 -69 190t-185 72h-366v-631h-197zM377 786h310q167 0 240.5 63.5t73.5 193.5 q0 123 -71.5 190.5t-222.5 67.5h-330v-515z" />
+<glyph unicode="S" horiz-adv-x="1277" d="M102 413l2 6h188q0 -140 103 -213t255 -73q149 0 236 63t87 171q0 100 -75 167.5t-266 113.5q-231 55 -360.5 162t-129.5 269q0 170 139.5 284t361.5 114q239 0 381 -131q137 -127 136 -292v-12l-2 -6h-188q0 128 -84.5 207t-242.5 79q-147 0 -225.5 -66.5t-78.5 -173.5 q0 -95 85 -158.5t276 -111.5q230 -57 350 -168t120 -275q0 -176 -144 -283t-376 -107q-218 0 -386 118q-163 115 -162 305v11z" />
+<glyph unicode="T" horiz-adv-x="1200" d="M34 1301v155h1132v-155h-468v-1301h-197v1301h-467z" />
+<glyph unicode="U" horiz-adv-x="1386" d="M147 469v987h197v-987q0 -165 94 -250.5t248 -85.5q162 0 261.5 85.5t99.5 250.5v987h197v-987q0 -238 -154.5 -364t-403.5 -126q-240 0 -389.5 126.5t-149.5 363.5z" />
+<glyph unicode="V" horiz-adv-x="1295" d="M22 1456h214l376 -1094l33 -115h6l33 115l376 1094h213l-541 -1456h-169z" />
+<glyph unicode="W" horiz-adv-x="1809" d="M54 1456h196l222 -952l27 -182l6 -1l39 183l267 952h174l269 -952l40 -187h6l29 187l217 952h197l-351 -1456h-176l-287 1010l-26 131h-6l-25 -131l-292 -1010h-176z" />
+<glyph unicode="X" horiz-adv-x="1295" d="M66 0l472 734l-462 722h236l338 -568l340 568h238l-462 -722l472 -734h-235l-349 578l-350 -578h-238z" />
+<glyph unicode="Y" horiz-adv-x="1250" d="M20 1456h225l380 -740l380 740h225l-511 -944v-512h-196v525z" />
+<glyph unicode="Z" horiz-adv-x="1225" d="M97 0v146l778 1155h-767v155h992v-141l-781 -1161h814v-154h-1036z" />
+<glyph unicode="[" horiz-adv-x="552" d="M143 -312v1976h385v-155h-188v-1666h188v-155h-385z" />
+<glyph unicode="\" horiz-adv-x="846" d="M39 1456h186l608 -1581h-186z" />
+<glyph unicode="]" horiz-adv-x="552" d="M11 -157h189v1666h-189v155h386v-1976h-386v155z" />
+<glyph unicode="^" horiz-adv-x="856" d="M61 729l299 727h134l298 -727h-181l-166 419l-16 70h-6l-16 -70l-163 -419h-183z" />
+<glyph unicode="_" horiz-adv-x="931" d="M4 0h923v-154h-923v154z" />
+<glyph unicode="`" horiz-adv-x="641" d="M82 1471l3 6h230l175 -266h-158z" />
+<glyph unicode="a" horiz-adv-x="1126" d="M106 304q0 155 125.5 242.5t340.5 87.5h214v107q0 95 -58 150.5t-164 55.5q-95 0 -154.5 -48.5t-59.5 -116.5h-188l-2 6v11q0 111 112 205q118 98 303 98q184 0 296 -93.5t112 -269.5v-521q0 -58 6 -112t22 -106h-203q-10 49 -15.5 86.5t-6.5 75.5q-55 -78 -143.5 -130.5 t-190.5 -52.5q-169 0 -257.5 86.5t-88.5 238.5zM303 300q0 -72 45 -114t133 -42q107 0 193 55t112 126v176h-221q-119 0 -190.5 -60t-71.5 -141z" />
+<glyph unicode="b" d="M143 0v1560h197v-606q51 72 126.5 110t176.5 38q200 0 312 -160t112 -421v-21q0 -234 -112.5 -377.5t-309.5 -143.5q-107 0 -186 41.5t-131 122.5l-24 -143h-161zM340 309q38 -80 99.5 -125t155.5 -45q139 0 207 99t68 262v21q0 186 -68.5 303.5t-208.5 117.5 q-91 0 -153.5 -44.5t-99.5 -119.5v-469z" />
+<glyph unicode="c" horiz-adv-x="1087" d="M97 520v42q0 231 125.5 385.5t360.5 154.5q191 0 311 -112q117 -108 116 -265v-10l-2 -6h-178q0 99 -70 168.5t-177 69.5q-155 0 -221.5 -111.5t-66.5 -273.5v-42q0 -166 66 -276.5t222 -110.5q98 0 172.5 60.5t74.5 148.5h177l2 -6v-10q-1 -134 -125 -238 q-130 -108 -301 -109q-236 0 -361 154t-125 387z" />
+<glyph unicode="d" d="M98 500v21q0 261 111.5 421t312.5 160q95 0 168.5 -35t125.5 -102v595h197v-1560h-161l-23 133q-53 -76 -130 -115t-179 -39q-198 0 -310 143.5t-112 377.5zM295 500q0 -164 67 -262.5t208 -98.5q88 0 148 40t98 112v505q-38 67 -98.5 106.5t-145.5 39.5 q-142 0 -209.5 -117t-67.5 -304v-21z" />
+<glyph unicode="e" horiz-adv-x="1083" d="M99 520v44q0 231 137.5 384.5t325.5 153.5q219 0 331 -132t112 -352v-123h-702l-3 -5q3 -156 79 -256.5t213 -100.5q100 0 175.5 28.5t130.5 78.5l77 -128q-58 -57 -153 -95t-230 -38q-226 0 -359.5 150.5t-133.5 390.5zM307 654l2 -5h499v26q0 116 -62 194t-184 78 q-99 0 -169 -83.5t-86 -209.5z" />
+<glyph unicode="f" horiz-adv-x="707" d="M56 936v146h169v137q0 173 90.5 267.5t252.5 94.5q34 0 68.5 -5.5t76.5 -15.5l-24 -150q-18 4 -43.5 7t-53.5 3q-86 0 -128 -51.5t-42 -149.5v-137h225v-146h-225v-936h-197v936h-169z" />
+<glyph unicode="g" d="M100 500v21q0 261 114 421t315 160q103 0 181 -41.5t130 -119.5l24 141h157v-1088q0 -208 -121 -319.5t-349 -111.5q-78 0 -168.5 21.5t-159.5 58.5l50 153q53 -30 128 -48.5t148 -18.5q144 0 209.5 65.5t65.5 199.5v122q-53 -68 -127 -102.5t-170 -34.5q-199 0 -313 144 t-114 377zM297 500q0 -163 69 -262t210 -99q89 0 149 40.5t99 114.5v498q-38 69 -99 109.5t-147 40.5q-141 0 -211 -118t-70 -303v-21z" />
+<glyph unicode="h" d="M143 0v1560h197v-623q56 78 137.5 121.5t180.5 43.5q173 0 269.5 -104t96.5 -320v-678h-197v680q0 134 -57.5 198t-171.5 64q-82 0 -148.5 -38.5t-109.5 -104.5v-799h-197z" />
+<glyph unicode="i" horiz-adv-x="516" d="M159 0v1082h197v-1082h-197zM159 1359v201h197v-201h-197z" />
+<glyph unicode="j" horiz-adv-x="530" d="M-66 -419l14 155q14 -5 40 -8.5t43 -3.5q65 0 103.5 44t38.5 143v1171h197v-1171q0 -167 -86 -257.5t-239 -90.5q-31 0 -56.5 4.5t-54.5 13.5zM167 1363v197h197v-197h-197z" />
+<glyph unicode="k" horiz-adv-x="1050" d="M144 0v1560h197v-904h126l296 426h236l-370 -492l423 -590h-232l-351 499h-128v-499h-197z" />
+<glyph unicode="l" horiz-adv-x="516" d="M159 0v1560h197v-1560h-197z" />
+<glyph unicode="m" horiz-adv-x="1790" d="M143 0v1082h176l14 -142q53 77 134.5 119.5t189.5 42.5t185.5 -50t116.5 -150q51 92 135 146t196 54q165 0 261 -113.5t96 -341.5v-647h-197v649q0 160 -55 226.5t-164 66.5q-101 0 -163.5 -70t-73.5 -177v-8v-687h-198v649q0 152 -56.5 222.5t-162.5 70.5 q-90 0 -148 -37t-89 -104v-801h-197z" />
+<glyph unicode="n" d="M143 0v1082h176l14 -161q54 86 135.5 133.5t185.5 47.5q175 0 271 -102.5t96 -316.5v-683h-197v679q0 143 -56.5 203t-172.5 60q-85 0 -150.5 -41t-104.5 -112v-789h-197z" />
+<glyph unicode="o" d="M97 529v22q0 240 130 395.5t353 155.5q225 0 355.5 -155t130.5 -396v-22q0 -242 -130 -396t-354 -154t-354.5 154.5t-130.5 395.5zM294 529q0 -172 72.5 -284t215.5 -112q141 0 214 112t73 284v22q0 170 -73.5 283t-215.5 113q-141 0 -213.5 -113t-72.5 -283v-22z" />
+<glyph unicode="p" d="M143 -416v1498h151l31 -140q53 78 132 119t184 41q201 0 312.5 -159.5t111.5 -421.5v-21q0 -234 -112 -377.5t-309 -143.5q-100 0 -175.5 33.5t-128.5 100.5v-529h-197zM340 275q37 -67 97 -104.5t147 -37.5q140 0 212 102.5t72 264.5v21q0 184 -72.5 302.5t-213.5 118.5 q-85 0 -145 -38.5t-97 -105.5v-523z" />
+<glyph unicode="q" d="M98 500v21q0 261 111.5 421t312.5 160q99 0 174 -37.5t127 -109.5l29 127h150v-1498h-197v518q-52 -61 -123 -92t-162 -31q-198 0 -310 143.5t-112 377.5zM295 500q0 -164 67.5 -265.5t207.5 -101.5q81 0 138.5 36t96.5 101v546q-39 61 -96.5 96t-136.5 35 q-141 0 -209 -119.5t-68 -306.5v-21z" />
+<glyph unicode="r" horiz-adv-x="702" d="M143 0v1082h176l19 -158q46 84 113.5 131t155.5 47q22 0 42 -3.5t33 -7.5l-27 -183l-101 6q-78 0 -131.5 -37t-82.5 -104v-773h-197z" />
+<glyph unicode="s" horiz-adv-x="1071" d="M109 329l2 6h188q5 -105 78 -153.5t171 -48.5q105 0 164.5 42.5t59.5 111.5q0 65 -49.5 107t-187.5 73q-197 43 -296.5 116.5t-99.5 200.5q0 132 112 225t292 93q189 0 301 -97q107 -93 106 -224v-12l-2 -6h-188q0 71 -59.5 127.5t-157.5 56.5q-105 0 -156 -46t-51 -111 q0 -64 45 -101t183 -66q205 -44 305 -119.5t100 -202.5q0 -144 -116.5 -233t-304.5 -89q-207 0 -326 105q-113 100 -113 232v13z" />
+<glyph unicode="t" horiz-adv-x="708" d="M34 936v146h172v261h197v-261h205v-146h-205v-657q0 -76 31.5 -107t83.5 -31q17 0 37.5 4t36.5 10l26 -135q-22 -18 -64.5 -29.5t-85.5 -11.5q-120 0 -191 72.5t-71 227.5v657h-172z" />
+<glyph unicode="u" d="M139 444v638h197v-640q0 -173 51 -238t159 -65q105 0 173.5 42.5t103.5 120.5v780h197v-1082h-177l-13 160q-51 -87 -131 -134t-185 -47q-177 0 -276 113t-99 352z" />
+<glyph unicode="v" horiz-adv-x="1030" d="M46 1082h202l256 -763l17 -76h6l19 76l249 763h201l-398 -1082h-149z" />
+<glyph unicode="w" horiz-adv-x="1550" d="M45 1082h196l179 -688l23 -131h6l28 131l216 688h158l217 -688l31 -146h6l29 146l170 688h196l-314 -1082h-159l-209 659l-45 184l-6 -1l-43 -183l-206 -659h-159z" />
+<glyph unicode="x" horiz-adv-x="1030" d="M46 0l361 547l-351 535h227l227 -399l230 399h230l-351 -535l361 -547h-226l-240 409l-240 -409h-228z" />
+<glyph unicode="y" horiz-adv-x="1030" d="M26 1082h220l228 -681l35 -136h6l266 817h219l-455 -1248q-41 -109 -117.5 -190t-206.5 -81q-24 0 -61 5.5t-57 10.5l20 155q-6 1 35.5 -2t52.5 -3q63 0 103 56t67 124l47 113z" />
+<glyph unicode="z" horiz-adv-x="1030" d="M94 0v138l585 788h-578v156h819v-134l-591 -794h625v-154h-860z" />
+<glyph unicode="{" horiz-adv-x="696" d="M63 543v147q106 0 157.5 61.5t51.5 174.5v206q0 171 82 290.5t277 174.5l40 -117q-110 -35 -156 -125.5t-46 -222.5v-206q0 -105 -42.5 -185t-127.5 -125q85 -46 127.5 -126.5t42.5 -183.5v-205q0 -132 46 -221.5t156 -125.5l-40 -118q-195 55 -277 175t-82 290v205 q0 112 -51.5 174.5t-157.5 62.5z" />
+<glyph unicode="|" horiz-adv-x="507" d="M175 -270v1726h158v-1726h-158z" />
+<glyph unicode="}" horiz-adv-x="696" d="M21 -246q109 36 156 125.5t47 221.5v205q0 107 45 187t139 123q-94 41 -139 121t-45 189v206q0 132 -47 222.5t-156 125.5l41 117q194 -55 276.5 -174.5t82.5 -290.5v-206q0 -113 50.5 -174.5t158.5 -61.5v-147q-108 0 -158.5 -62.5t-50.5 -174.5v-205q0 -170 -82.5 -290 t-276.5 -175z" />
+<glyph unicode="~" horiz-adv-x="1391" d="M128 474q0 136 85.5 232.5t217.5 96.5q88 0 163 -34.5t160 -104.5q58 -51 106 -74t100 -23q66 0 114.5 57t48.5 134l141 -18q0 -137 -87 -238t-217 -101q-90 0 -163.5 33t-158.5 107q-59 48 -108 72t-99 24q-67 0 -114.5 -53t-47.5 -128z" />
+<glyph unicode="&#xa1;" horiz-adv-x="507" d="M144 -374v978h197v-978h-197zM144 876v206h197v-206h-197z" />
+<glyph unicode="&#xa2;" horiz-adv-x="1122" d="M107 520v42q0 199 95 344.5t276 183.5v228h198v-223q157 -24 252.5 -130.5t92.5 -250.5l-2 -5h-179q0 99 -70 168.5t-177 69.5q-155 0 -221.5 -111.5t-66.5 -273.5v-42q0 -166 66 -276.5t222 -110.5q98 0 172.5 60.5t74.5 148.5h178l3 -6q3 -122 -98 -223t-247 -126v-232 h-198v236q-182 36 -276.5 182t-94.5 347z" />
+<glyph unicode="&#xa3;" horiz-adv-x="1194" d="M70 615v155h158l-10 270q0 204 112 320.5t300 116.5q200 0 310 -104.5t106 -276.5l-2 -6h-190q0 118 -63 175t-161 57q-99 0 -157 -74.5t-58 -207.5l10 -270h418v-155h-413l6 -149q0 -90 -15.5 -171.5t-44.5 -140.5h735l-1 -154h-976v154h10q48 13 72 111t24 201l-6 149 h-164z" />
+<glyph unicode="&#xa4;" horiz-adv-x="1456" d="M104 112l138 140q-50 76 -76.5 166.5t-26.5 189.5q0 102 28.5 196t82.5 172l-146 149l139 139l143 -146q74 55 163 85.5t185 30.5q97 0 186 -31t164 -87l146 149l140 -140l-150 -153q52 -78 80.5 -170.5t28.5 -193.5q0 -98 -26.5 -187.5t-74.5 -165.5l142 -143l-140 -139 l-133 135q-77 -62 -169.5 -95t-193.5 -33t-193.5 32.5t-167.5 93.5l-130 -132zM321 608q0 -188 120.5 -320.5t292.5 -132.5q170 0 290.5 132.5t120.5 320.5q0 186 -120.5 318t-290.5 132q-172 0 -292.5 -132t-120.5 -318z" />
+<glyph unicode="&#xa5;" horiz-adv-x="1243" d="M30 1456h226l359 -663l360 663h224l-418 -718h312v-155h-383v-135h383v-155h-383v-293h-197v293h-375v155h375v135h-375v155h311z" />
+<glyph unicode="&#xa6;" horiz-adv-x="499" d="M145 -270v792h197v-792h-197zM145 698v758h197v-758h-197z" />
+<glyph unicode="&#xa7;" horiz-adv-x="1259" d="M94 551q0 91 47 161.5t134 111.5q-68 50 -102 119.5t-34 166.5q0 166 134 266.5t358 100.5q233 0 363 -111.5t126 -313.5l-3 -6h-188q0 118 -79 197t-219 79q-145 0 -220 -59.5t-75 -150.5q0 -99 67 -148.5t278 -107.5q244 -69 355.5 -159.5t111.5 -265.5q0 -94 -48 -164 t-135 -110q69 -51 104 -119t35 -166q0 -172 -133 -269.5t-358 -97.5q-221 0 -372 102.5t-146 322.5l2 6l188 2q0 -143 96.5 -210.5t231.5 -67.5q137 0 215.5 59.5t78.5 150.5t-72 141.5t-276 113.5q-239 63 -352 156t-113 270zM291 553q0 -100 68 -151.5t278 -110.5 q56 -17 93 -28t70 -23q72 20 112 69.5t40 118.5q0 91 -73.5 144.5t-275.5 116.5q-47 12 -88.5 24.5t-77.5 27.5q-73 -19 -109.5 -69t-36.5 -119z" />
+<glyph unicode="&#xa8;" horiz-adv-x="1021" d="M170 1256v200h219v-200h-219zM640 1256v200h219v-200h-219z" />
+<glyph unicode="&#xa9;" horiz-adv-x="1604" d="M88 729q0 315 207 531t503 216q295 0 502 -216t207 -531q0 -316 -207.5 -533t-501.5 -217q-296 0 -503 217t-207 533zM209 729q0 -265 171.5 -447t417.5 -182q245 0 417 182t172 447q0 263 -172 444t-417 181q-246 0 -417.5 -181t-171.5 -444zM436 669v119q0 173 94 280 t254 107q157 0 245.5 -79t84.5 -228l-2 -6h-146q0 95 -45.5 138.5t-136.5 43.5q-94 0 -145 -70.5t-51 -184.5v-120q0 -117 51 -187t145 -70q91 0 136 43t45 141h146l2 -6q4 -151 -84 -229.5t-245 -78.5q-160 0 -254 106.5t-94 280.5z" />
+<glyph unicode="&#xaa;" horiz-adv-x="917" d="M120 920q0 110 84.5 170t245.5 60h139v52q0 63 -30 97t-88 34q-67 0 -103.5 -27t-36.5 -76l-162 13l-1 6q-6 98 78.5 163t224.5 65q134 0 212 -71t78 -205v-314q0 -50 6 -94t20 -87h-174q-8 21 -13 45t-8 50q-33 -47 -89.5 -78t-133.5 -31q-119 0 -184 61t-65 167z M293 924q0 -45 29 -69t89 -24q51 0 105.5 30t72.5 65v110h-138q-75 0 -116.5 -33t-41.5 -79z" />
+<glyph unicode="&#xab;" horiz-adv-x="966" d="M98 507v19l295 389h148l-255 -399l255 -398h-148zM432 507v19l295 389h148l-255 -399l255 -398h-148z" />
+<glyph unicode="&#xac;" horiz-adv-x="1137" d="M127 637v165h835v-427h-198v262h-637z" />
+<glyph unicode="&#xad;" horiz-adv-x="561" d="M35 538v154h490v-154h-490z" />
+<glyph unicode="&#xae;" horiz-adv-x="1604" d="M88 729q0 315 207 531t503 216q295 0 502 -216t207 -531q0 -316 -207.5 -533t-501.5 -217q-296 0 -503 217t-207 533zM209 729q0 -266 171.5 -447.5t417.5 -181.5q244 0 416 182t172 447q0 264 -171.5 444.5t-416.5 180.5q-246 0 -417.5 -180.5t-171.5 -444.5zM504 316 v850h280q152 0 238.5 -65.5t86.5 -191.5q0 -62 -33 -109t-96 -78q66 -26 95.5 -79t29.5 -128v-56q0 -41 3.5 -73.5t13.5 -53.5v-16h-153q-9 21 -11 61.5t-2 82.5v54q0 72 -33.5 106t-110.5 34h-159v-338h-149zM653 784h152q65 1 110.5 32.5t45.5 87.5q0 73 -39.5 102.5 t-137.5 29.5h-131v-252z" />
+<glyph unicode="&#xaf;" horiz-adv-x="950" d="M123 1310v146h721v-146h-721z" />
+<glyph unicode="&#xb0;" horiz-adv-x="763" d="M128 1216q0 106 76 183.5t181 77.5q103 0 177.5 -77.5t74.5 -183.5q0 -108 -74 -182.5t-178 -74.5q-106 0 -181.5 74.5t-75.5 182.5zM259 1216q0 -55 36.5 -91t89.5 -36q52 0 87.5 36t35.5 91t-36 92.5t-87 37.5q-53 0 -89.5 -37.5t-36.5 -92.5z" />
+<glyph unicode="&#xb1;" horiz-adv-x="1097" d="M99 702v154h381v411h177v-411h358v-154h-358v-413h-177v413h-381zM136 4v155h835v-155h-835z" />
+<glyph unicode="&#xb2;" horiz-adv-x="868" d="M119 1240q-6 99 78 169t225 70q135 0 211 -64t76 -180q0 -80 -44.5 -136t-160.5 -161l-153 -135l2 -6h361v-130h-592v130l302 262q69 60 91 97.5t22 79.5q0 50 -28.5 81t-86.5 31q-67 0 -103.5 -32t-36.5 -82h-161z" />
+<glyph unicode="&#xb3;" horiz-adv-x="876" d="M112 882l1 6h163q0 -46 37.5 -74.5t100.5 -28.5q72 0 114 29.5t42 77.5q0 62 -36.5 90.5t-109.5 28.5h-132v126h132q67 0 99.5 28.5t32.5 80.5q0 43 -36.5 72t-105.5 29q-56 0 -90.5 -24t-34.5 -64h-162l-2 6q-6 94 78.5 153.5t210.5 59.5q145 0 229 -59.5t84 -169.5 q0 -55 -35.5 -100.5t-97.5 -71.5q70 -23 108 -71t38 -116q0 -111 -90 -173t-236 -62q-127 0 -217.5 58t-84.5 169z" />
+<glyph unicode="&#xb4;" horiz-adv-x="654" d="M131 1211l185 266h230l2 -6l-270 -260h-147z" />
+<glyph unicode="&#xb5;" d="M153 -416v1498h196v-642q2 -178 57.5 -242.5t155.5 -64.5q98 0 158.5 36t92.5 106v807h197v-1082h-177l-9 108q-44 -63 -107.5 -96t-146.5 -33q-72 0 -126.5 16.5t-94.5 51.5v-463h-196z" />
+<glyph unicode="&#xb6;" horiz-adv-x="1006" d="M63 988q0 207 129.5 337.5t362.5 130.5h281v-1456h-197v520h-84q-233 0 -362.5 129.5t-129.5 338.5z" />
+<glyph unicode="&#xb7;" horiz-adv-x="540" d="M161 624v212h198v-212h-198z" />
+<glyph unicode="&#xb8;" horiz-adv-x="509" d="M119 -326q72 0 116 24.5t44 73.5q0 48 -36 67t-123 26l32 135h140l-12 -52q65 -11 108 -52t43 -121q0 -96 -79 -153t-226 -57z" />
+<glyph unicode="&#xb9;" horiz-adv-x="557" d="M95 1320v134l301 23v-812h-174v655h-127z" />
+<glyph unicode="&#xba;" horiz-adv-x="933" d="M120 1025v117q0 148 94 241.5t251 93.5q158 0 252 -93.5t94 -241.5v-117q0 -149 -93.5 -241.5t-250.5 -92.5q-158 0 -252.5 92.5t-94.5 241.5zM293 1025q0 -88 44 -140.5t130 -52.5q83 0 127.5 53t44.5 140v117q0 84 -45 137.5t-129 53.5t-128 -53.5t-44 -137.5v-117z " />
+<glyph unicode="&#xbb;" horiz-adv-x="966" d="M110 152l255 398l-255 399h148l295 -389v-19l-295 -389h-148zM456 152l255 398l-255 399h148l295 -389v-19l-295 -389h-148z" />
+<glyph unicode="&#xbc;" horiz-adv-x="1595" d="M184 1319v134l301 23v-812h-174v655h-127zM339 185l711 1138l109 -67l-711 -1138zM785 254l422 547h173v-519h126v-130h-126v-152h-170v152h-417zM967 282h243v310l-6 1l-13 -22z" />
+<glyph unicode="&#xbd;" horiz-adv-x="1708" d="M184 1319v134l301 23v-812h-174v655h-127zM352 185l711 1138l109 -67l-711 -1138zM930 573q-6 99 78 169t225 70q135 0 211 -64t76 -180q0 -80 -44.5 -136t-160.5 -161l-153 -135l2 -6h361v-130h-592v130l302 262q69 60 91 97.5t22 79.5q0 50 -28.5 81t-86.5 31 q-67 0 -103.5 -32t-36.5 -82h-161z" />
+<glyph unicode="&#xbe;" horiz-adv-x="1781" d="M128 883l1 6h163q0 -46 37.5 -74.5t100.5 -28.5q72 0 114 29.5t42 77.5q0 62 -36.5 90.5t-109.5 28.5h-132v126h132q67 0 99.5 28.5t32.5 80.5q0 43 -36.5 72t-105.5 29q-56 0 -90.5 -24t-34.5 -64h-162l-2 6q-6 94 78.5 153.5t210.5 59.5q145 0 229 -59.5t84 -169.5 q0 -55 -35.5 -100.5t-97.5 -71.5q70 -23 108 -71t38 -116q0 -111 -90 -173t-236 -62q-127 0 -217.5 58t-84.5 169zM522 185l711 1138l109 -67l-711 -1138zM974 254l422 547h173v-519h126v-130h-126v-152h-170v152h-417zM1156 282h243v310l-6 1l-13 -22z" />
+<glyph unicode="&#xbf;" horiz-adv-x="1013" d="M114 -13q0 127 70 233.5t187 220.5q53 53 65 96t12 135h197q-2 -146 -26 -202t-125 -147q-100 -118 -141.5 -181t-41.5 -150q0 -106 56 -163t162 -57q90 0 154.5 49.5t64.5 145.5h188l3 -6q2 -161 -114.5 -258t-295.5 -97q-198 0 -306.5 100.5t-108.5 280.5zM441 874v209 h206v-209h-206z" />
+<glyph unicode="&#xc0;" horiz-adv-x="1326" d="M20 0l563 1456h169l554 -1456h-201l-136 375h-610l-138 -375h-201zM378 1820l3 6h230l175 -266h-158zM420 540h490l-240 663h-6z" />
+<glyph unicode="&#xc1;" horiz-adv-x="1326" d="M20 0l563 1456h169l554 -1456h-201l-136 375h-610l-138 -375h-201zM420 540h490l-240 663h-6zM613 1556l185 266h230l2 -6l-270 -260h-147z" />
+<glyph unicode="&#xc2;" horiz-adv-x="1326" d="M20 0l563 1456h169l554 -1456h-201l-136 375h-610l-138 -375h-201zM356 1601v26l246 237h120l248 -238v-25h-161l-147 148l-146 -148h-160zM420 540h490l-240 663h-6z" />
+<glyph unicode="&#xc3;" horiz-adv-x="1326" d="M20 0l563 1456h169l554 -1456h-201l-136 375h-610l-138 -375h-201zM316 1628q0 93 59 161.5t150 68.5q56 0 140 -47t136 -47q41 0 71 32.5t30 79.5l108 -32q0 -94 -59.5 -159t-149.5 -65q-71 0 -148 46.5t-128 46.5q-43 0 -72 -32.5t-29 -78.5zM420 540h490l-240 663h-6z " />
+<glyph unicode="&#xc4;" horiz-adv-x="1326" d="M20 0l563 1456h169l554 -1456h-201l-136 375h-610l-138 -375h-201zM319 1605v200h219v-200h-219zM420 540h490l-240 663h-6zM789 1605v200h219v-200h-219z" />
+<glyph unicode="&#xc5;" horiz-adv-x="1326" d="M20 0l563 1456h169l554 -1456h-201l-136 375h-610l-138 -375h-201zM420 540h490l-240 663h-6zM457 1734q0 84 60.5 141t147.5 57q85 0 145 -56.5t60 -141.5q0 -86 -59.5 -140t-145.5 -54q-87 0 -147.5 54t-60.5 140zM560 1734q0 -43 31 -73.5t74 -30.5q42 0 72 29.5 t30 74.5t-30 76t-72 31q-43 0 -74 -31t-31 -76z" />
+<glyph unicode="&#xc6;" horiz-adv-x="1922" d="M-20 0l880 1456h967v-155h-691l20 -466h590v-155h-584l22 -526h705v-154h-895l-15 350h-557l-202 -350h-240zM525 529h447l-31 710l-5 2z" />
+<glyph unicode="&#xc7;" horiz-adv-x="1297" d="M118 598v259q0 269 155.5 444.5t402.5 175.5t393 -131.5t142 -348.5l-2 -6h-189q0 153 -90 242t-254 89q-165 0 -263 -133t-98 -330v-261q0 -199 98 -332t263 -133q164 0 254 88.5t90 244.5h189l2 -6q4 -205 -144 -343t-391 -138q-247 0 -402.5 175t-155.5 444zM581 -334 q72 0 116 24.5t44 73.5q0 48 -36 67t-123 26l32 135h140l-12 -52q65 -11 108 -52t43 -121q0 -96 -79 -153t-226 -57z" />
+<glyph unicode="&#xc8;" horiz-adv-x="1197" d="M180 0v1456h955v-155h-758v-471h667v-155h-667v-521h769v-154h-966zM303 1820l3 6h230l175 -266h-158z" />
+<glyph unicode="&#xc9;" horiz-adv-x="1197" d="M180 0v1456h955v-155h-758v-471h667v-155h-667v-521h769v-154h-966zM538 1556l185 266h230l2 -6l-270 -260h-147z" />
+<glyph unicode="&#xca;" horiz-adv-x="1197" d="M180 0v1456h955v-155h-758v-471h667v-155h-667v-521h769v-154h-966zM322 1601v26l246 237h120l248 -238v-25h-161l-147 148l-146 -148h-160z" />
+<glyph unicode="&#xcb;" horiz-adv-x="1197" d="M180 0v1456h955v-155h-758v-471h667v-155h-667v-521h769v-154h-966zM284 1605v200h219v-200h-219zM754 1605v200h219v-200h-219z" />
+<glyph unicode="&#xcc;" horiz-adv-x="579" d="M-34 1820l3 6h230l175 -266h-158zM190 0v1456h198v-1456h-198z" />
+<glyph unicode="&#xcd;" horiz-adv-x="579" d="M190 0v1456h198v-1456h-198zM199 1556l185 266h230l2 -6l-270 -260h-147z" />
+<glyph unicode="&#xce;" horiz-adv-x="579" d="M-15 1601v26l246 237h120l248 -238v-25h-161l-147 148l-146 -148h-160zM190 0v1456h198v-1456h-198z" />
+<glyph unicode="&#xcf;" horiz-adv-x="579" d="M-53 1605v200h219v-200h-219zM190 0v1456h198v-1456h-198zM417 1605v200h219v-200h-219z" />
+<glyph unicode="&#xd0;" horiz-adv-x="1379" d="M42 663v155h168v638h447q286 0 459 -175.5t173 -453.5v-199q0 -279 -173 -453.5t-459 -174.5h-447v663h-168zM407 154h250q202 0 318.5 133t116.5 341v201q0 206 -116.5 339t-318.5 133h-250v-483h276v-155h-276v-509z" />
+<glyph unicode="&#xd1;" horiz-adv-x="1461" d="M180 0v1456h197l701 -1124l6 2v1122h197v-1456h-197l-701 1126l-6 -2v-1124h-197zM381 1628q0 93 59 161.5t150 68.5q56 0 140 -47t136 -47q41 0 71 32.5t30 79.5l108 -32q0 -94 -59.5 -159t-149.5 -65q-71 0 -148 46.5t-128 46.5q-43 0 -72 -32.5t-29 -78.5z" />
+<glyph unicode="&#xd2;" horiz-adv-x="1396" d="M113 598v259q0 266 159.5 443t414.5 177q264 0 429.5 -176.5t165.5 -443.5v-259q0 -267 -165.5 -443t-429.5 -176q-255 0 -414.5 176t-159.5 443zM310 598q0 -202 102.5 -330t274.5 -128q183 0 290.5 127.5t107.5 330.5v261q0 200 -108 328t-290 128q-172 0 -274.5 -128 t-102.5 -328v-261zM373 1841l3 6h230l175 -266h-158z" />
+<glyph unicode="&#xd3;" horiz-adv-x="1396" d="M113 598v259q0 266 159.5 443t414.5 177q264 0 429.5 -176.5t165.5 -443.5v-259q0 -267 -165.5 -443t-429.5 -176q-255 0 -414.5 176t-159.5 443zM310 598q0 -202 102.5 -330t274.5 -128q183 0 290.5 127.5t107.5 330.5v261q0 200 -108 328t-290 128q-172 0 -274.5 -128 t-102.5 -328v-261zM608 1577l185 266h230l2 -6l-270 -260h-147z" />
+<glyph unicode="&#xd4;" horiz-adv-x="1396" d="M113 598v259q0 266 159.5 443t414.5 177q264 0 429.5 -176.5t165.5 -443.5v-259q0 -267 -165.5 -443t-429.5 -176q-255 0 -414.5 176t-159.5 443zM310 598q0 -202 102.5 -330t274.5 -128q183 0 290.5 127.5t107.5 330.5v261q0 200 -108 328t-290 128q-172 0 -274.5 -128 t-102.5 -328v-261zM392 1622v26l246 237h120l248 -238v-25h-161l-147 148l-146 -148h-160z" />
+<glyph unicode="&#xd5;" horiz-adv-x="1396" d="M113 598v259q0 266 159.5 443t414.5 177q264 0 429.5 -176.5t165.5 -443.5v-259q0 -267 -165.5 -443t-429.5 -176q-255 0 -414.5 176t-159.5 443zM310 598q0 -202 102.5 -330t274.5 -128q183 0 290.5 127.5t107.5 330.5v261q0 200 -108 328t-290 128q-172 0 -274.5 -128 t-102.5 -328v-261zM351 1649q0 93 59 161.5t150 68.5q56 0 140 -47t136 -47q41 0 71 32.5t30 79.5l108 -32q0 -94 -59.5 -159t-149.5 -65q-71 0 -148 46.5t-128 46.5q-43 0 -72 -32.5t-29 -78.5z" />
+<glyph unicode="&#xd6;" horiz-adv-x="1396" d="M113 598v259q0 266 159.5 443t414.5 177q264 0 429.5 -176.5t165.5 -443.5v-259q0 -267 -165.5 -443t-429.5 -176q-255 0 -414.5 176t-159.5 443zM310 598q0 -202 102.5 -330t274.5 -128q183 0 290.5 127.5t107.5 330.5v261q0 200 -108 328t-290 128q-172 0 -274.5 -128 t-102.5 -328v-261zM354 1626v200h219v-200h-219zM824 1626v200h219v-200h-219z" />
+<glyph unicode="&#xd7;" horiz-adv-x="1096" d="M88 351l327 334l-327 334l126 126l326 -333l327 333l126 -126l-328 -334l328 -334l-126 -126l-327 332l-326 -332z" />
+<glyph unicode="&#xd8;" horiz-adv-x="1396" d="M113 598v259q0 266 159.5 443t414.5 177q94 0 178.5 -25.5t156.5 -71.5l81 137h149l-132 -221q77 -84 119.5 -197t42.5 -242v-259q0 -267 -165.5 -443t-429.5 -176q-85 0 -160.5 20.5t-139.5 60.5l-91 -154h-149l139 234q-84 84 -128.5 202t-44.5 256zM310 598 q0 -85 19 -158t54 -125l6 -1l544 916q-50 41 -112 63t-134 22q-172 0 -274.5 -128t-102.5 -328v-261zM475 208q44 -34 97 -51t115 -17q183 0 290.5 127.5t107.5 330.5v261q0 75 -16.5 142t-46.5 117l-6 1z" />
+<glyph unicode="&#xd9;" horiz-adv-x="1386" d="M147 469v987h197v-987q0 -165 94 -250.5t248 -85.5q162 0 261.5 85.5t99.5 250.5v987h197v-987q0 -238 -154.5 -364t-403.5 -126q-240 0 -389.5 126.5t-149.5 363.5zM372 1820l3 6h230l175 -266h-158z" />
+<glyph unicode="&#xda;" horiz-adv-x="1386" d="M147 469v987h197v-987q0 -165 94 -250.5t248 -85.5q162 0 261.5 85.5t99.5 250.5v987h197v-987q0 -238 -154.5 -364t-403.5 -126q-240 0 -389.5 126.5t-149.5 363.5zM607 1556l185 266h230l2 -6l-270 -260h-147z" />
+<glyph unicode="&#xdb;" horiz-adv-x="1386" d="M147 469v987h197v-987q0 -165 94 -250.5t248 -85.5q162 0 261.5 85.5t99.5 250.5v987h197v-987q0 -238 -154.5 -364t-403.5 -126q-240 0 -389.5 126.5t-149.5 363.5zM391 1601v26l246 237h120l248 -238v-25h-161l-147 148l-146 -148h-160z" />
+<glyph unicode="&#xdc;" horiz-adv-x="1386" d="M147 469v987h197v-987q0 -165 94 -250.5t248 -85.5q162 0 261.5 85.5t99.5 250.5v987h197v-987q0 -238 -154.5 -364t-403.5 -126q-240 0 -389.5 126.5t-149.5 363.5zM353 1605v200h219v-200h-219zM823 1605v200h219v-200h-219z" />
+<glyph unicode="&#xdd;" horiz-adv-x="1250" d="M20 1456h225l380 -740l380 740h225l-511 -944v-512h-196v525zM535 1555l185 266h230l2 -6l-270 -260h-147z" />
+<glyph unicode="&#xde;" horiz-adv-x="1209" d="M163 0v1456h197v-293h269q232 0 362 -118t130 -307q0 -190 -130 -307.5t-362 -117.5h-269v-313h-197zM360 467h269q147 0 220.5 78t73.5 191q0 114 -73.5 193.5t-220.5 79.5h-269v-542z" />
+<glyph unicode="&#xdf;" horiz-adv-x="1221" d="M137 0v1082q0 223 117.5 348t300.5 125q161 0 262 -86t101 -253q0 -118 -64.5 -228t-64.5 -167q0 -82 173.5 -224t173.5 -281q0 -167 -104.5 -252t-282.5 -85q-84 0 -172.5 20.5t-125.5 50.5l44 159q43 -28 108 -52t126 -24q108 0 159 47.5t51 125.5q0 84 -173.5 227.5 t-173.5 289.5q0 80 70.5 190.5t70.5 186.5q0 93 -51 147t-117 54q-104 0 -168 -83.5t-64 -235.5v-1082h-196z" />
+<glyph unicode="&#xe0;" horiz-adv-x="1126" d="M106 304q0 155 125.5 242.5t340.5 87.5h214v107q0 95 -58 150.5t-164 55.5q-95 0 -154.5 -48.5t-59.5 -116.5h-188l-2 6q-6 118 111.5 216t303.5 98q184 0 296 -93.5t112 -269.5v-521q0 -58 6 -112t22 -106h-203q-10 49 -15.5 86.5t-6.5 75.5q-55 -78 -143.5 -130.5 t-190.5 -52.5q-169 0 -257.5 86.5t-88.5 238.5zM230 1498l3 6h230l175 -266h-158zM303 300q0 -72 45 -114t133 -42q107 0 193 55t112 126v176h-221q-119 0 -190.5 -60t-71.5 -141z" />
+<glyph unicode="&#xe1;" horiz-adv-x="1126" d="M106 304q0 155 125.5 242.5t340.5 87.5h214v107q0 95 -58 150.5t-164 55.5q-95 0 -154.5 -48.5t-59.5 -116.5h-188l-2 6q-6 118 111.5 216t303.5 98q184 0 296 -93.5t112 -269.5v-521q0 -58 6 -112t22 -106h-203q-10 49 -15.5 86.5t-6.5 75.5q-55 -78 -143.5 -130.5 t-190.5 -52.5q-169 0 -257.5 86.5t-88.5 238.5zM303 300q0 -72 45 -114t133 -42q107 0 193 55t112 126v176h-221q-119 0 -190.5 -60t-71.5 -141zM465 1234l185 266h230l2 -6l-270 -260h-147z" />
+<glyph unicode="&#xe2;" horiz-adv-x="1126" d="M106 304q0 155 125.5 242.5t340.5 87.5h214v107q0 95 -58 150.5t-164 55.5q-95 0 -154.5 -48.5t-59.5 -116.5h-188l-2 6q-6 118 111.5 216t303.5 98q184 0 296 -93.5t112 -269.5v-521q0 -58 6 -112t22 -106h-203q-10 49 -15.5 86.5t-6.5 75.5q-55 -78 -143.5 -130.5 t-190.5 -52.5q-169 0 -257.5 86.5t-88.5 238.5zM249 1279v26l246 237h120l248 -238v-25h-161l-147 148l-146 -148h-160zM303 300q0 -72 45 -114t133 -42q107 0 193 55t112 126v176h-221q-119 0 -190.5 -60t-71.5 -141z" />
+<glyph unicode="&#xe3;" horiz-adv-x="1126" d="M106 304q0 155 125.5 242.5t340.5 87.5h214v107q0 95 -58 150.5t-164 55.5q-95 0 -154.5 -48.5t-59.5 -116.5h-188l-2 6q-6 118 111.5 216t303.5 98q184 0 296 -93.5t112 -269.5v-521q0 -58 6 -112t22 -106h-203q-10 49 -15.5 86.5t-6.5 75.5q-55 -78 -143.5 -130.5 t-190.5 -52.5q-169 0 -257.5 86.5t-88.5 238.5zM208 1306q0 93 59 161.5t150 68.5q56 0 140 -47t136 -47q41 0 71 32.5t30 79.5l108 -32q0 -94 -59.5 -159t-149.5 -65q-71 0 -148 46.5t-128 46.5q-43 0 -72 -32.5t-29 -78.5zM303 300q0 -72 45 -114t133 -42q107 0 193 55 t112 126v176h-221q-119 0 -190.5 -60t-71.5 -141z" />
+<glyph unicode="&#xe4;" horiz-adv-x="1126" d="M106 304q0 155 125.5 242.5t340.5 87.5h214v107q0 95 -58 150.5t-164 55.5q-95 0 -154.5 -48.5t-59.5 -116.5h-188l-2 6q-6 118 111.5 216t303.5 98q184 0 296 -93.5t112 -269.5v-521q0 -58 6 -112t22 -106h-203q-10 49 -15.5 86.5t-6.5 75.5q-55 -78 -143.5 -130.5 t-190.5 -52.5q-169 0 -257.5 86.5t-88.5 238.5zM211 1283v200h219v-200h-219zM303 300q0 -72 45 -114t133 -42q107 0 193 55t112 126v176h-221q-119 0 -190.5 -60t-71.5 -141zM681 1283v200h219v-200h-219z" />
+<glyph unicode="&#xe5;" horiz-adv-x="1126" d="M106 304q0 155 125.5 242.5t340.5 87.5h214v107q0 95 -58 150.5t-164 55.5q-95 0 -154.5 -48.5t-59.5 -116.5h-188l-2 6q-6 118 111.5 216t303.5 98q184 0 296 -93.5t112 -269.5v-521q0 -58 6 -112t22 -106h-203q-10 49 -15.5 86.5t-6.5 75.5q-55 -78 -143.5 -130.5 t-190.5 -52.5q-169 0 -257.5 86.5t-88.5 238.5zM303 300q0 -72 45 -114t133 -42q107 0 193 55t112 126v176h-221q-119 0 -190.5 -60t-71.5 -141zM346 1412q0 84 60.5 141t147.5 57q85 0 145 -56.5t60 -141.5q0 -86 -59.5 -140t-145.5 -54q-87 0 -147.5 54t-60.5 140z M449 1412q0 -43 31 -73.5t74 -30.5q42 0 72 29.5t30 74.5t-30 76t-72 31q-43 0 -74 -31t-31 -76z" />
+<glyph unicode="&#xe6;" horiz-adv-x="1729" d="M58 304q0 158 115 244.5t335 86.5h229v85q0 106 -51.5 166.5t-149.5 60.5q-103 0 -164 -55t-61 -133l-188 18l-2 6q-5 138 109.5 228.5t305.5 90.5q114 0 201.5 -40.5t137.5 -117.5q64 75 151.5 116.5t188.5 41.5q214 0 329.5 -130t115.5 -358v-119h-709l-2 -5 q1 -159 79.5 -258t233.5 -99q103 0 169.5 27.5t144.5 78.5l67 -138q-53 -44 -147 -83t-234 -39q-136 0 -240 48.5t-170 138.5q-56 -79 -167.5 -133t-271.5 -54q-170 0 -262.5 87t-92.5 238zM255 300q0 -74 50 -120.5t147 -46.5q76 0 159 43.5t126 100.5v216h-227 q-120 0 -187.5 -56t-67.5 -137zM953 645l2 -5h508v31q0 122 -60 199t-188 77q-113 0 -182 -84.5t-80 -217.5z" />
+<glyph unicode="&#xe7;" horiz-adv-x="1087" d="M97 520v42q0 231 125.5 385.5t360.5 154.5q190 0 310.5 -112t116.5 -275l-2 -6h-178q0 99 -70 168.5t-177 69.5q-155 0 -221.5 -111.5t-66.5 -273.5v-42q0 -166 66 -276.5t222 -110.5q98 0 172.5 60.5t74.5 148.5h177l2 -6q5 -140 -124.5 -248.5t-301.5 -108.5 q-236 0 -361 154t-125 387zM440 -334q72 0 116 24.5t44 73.5q0 48 -36 67t-123 26l32 135h140l-12 -52q65 -11 108 -52t43 -121q0 -96 -79 -153t-226 -57z" />
+<glyph unicode="&#xe8;" horiz-adv-x="1083" d="M99 520v44q0 231 137.5 384.5t325.5 153.5q219 0 331 -132t112 -352v-123h-702l-3 -5q3 -156 79 -256.5t213 -100.5q100 0 175.5 28.5t130.5 78.5l77 -128q-58 -57 -153 -95t-230 -38q-226 0 -359.5 150.5t-133.5 390.5zM233 1499l3 6h230l175 -266h-158zM307 654l2 -5 h499v26q0 116 -62 194t-184 78q-99 0 -169 -83.5t-86 -209.5z" />
+<glyph unicode="&#xe9;" horiz-adv-x="1083" d="M99 520v44q0 231 137.5 384.5t325.5 153.5q219 0 331 -132t112 -352v-123h-702l-3 -5q3 -156 79 -256.5t213 -100.5q100 0 175.5 28.5t130.5 78.5l77 -128q-58 -57 -153 -95t-230 -38q-226 0 -359.5 150.5t-133.5 390.5zM307 654l2 -5h499v26q0 116 -62 194t-184 78 q-99 0 -169 -83.5t-86 -209.5zM468 1235l185 266h230l2 -6l-270 -260h-147z" />
+<glyph unicode="&#xea;" horiz-adv-x="1083" d="M99 520v44q0 231 137.5 384.5t325.5 153.5q219 0 331 -132t112 -352v-123h-702l-3 -5q3 -156 79 -256.5t213 -100.5q100 0 175.5 28.5t130.5 78.5l77 -128q-58 -57 -153 -95t-230 -38q-226 0 -359.5 150.5t-133.5 390.5zM252 1280v26l246 237h120l248 -238v-25h-161 l-147 148l-146 -148h-160zM307 654l2 -5h499v26q0 116 -62 194t-184 78q-99 0 -169 -83.5t-86 -209.5z" />
+<glyph unicode="&#xeb;" horiz-adv-x="1083" d="M99 520v44q0 231 137.5 384.5t325.5 153.5q219 0 331 -132t112 -352v-123h-702l-3 -5q3 -156 79 -256.5t213 -100.5q100 0 175.5 28.5t130.5 78.5l77 -128q-58 -57 -153 -95t-230 -38q-226 0 -359.5 150.5t-133.5 390.5zM214 1284v200h219v-200h-219zM307 654l2 -5h499 v26q0 116 -62 194t-184 78q-99 0 -169 -83.5t-86 -209.5zM684 1284v200h219v-200h-219z" />
+<glyph unicode="&#xec;" horiz-adv-x="515" d="M-71 1477l3 6h230l175 -266h-158zM153 0v1082h197v-1082h-197z" />
+<glyph unicode="&#xed;" horiz-adv-x="515" d="M153 0v1082h197v-1082h-197zM162 1213l185 266h230l2 -6l-270 -260h-147z" />
+<glyph unicode="&#xee;" horiz-adv-x="515" d="M-52 1258v26l246 237h120l248 -238v-25h-161l-147 148l-146 -148h-160zM153 0v1082h197v-1082h-197z" />
+<glyph unicode="&#xef;" horiz-adv-x="515" d="M-90 1262v200h219v-200h-219zM153 0v1082h197v-1082h-197zM380 1262v200h219v-200h-219z" />
+<glyph unicode="&#xf0;" horiz-adv-x="1202" d="M72 466q0 228 138 370t351 142q90 0 169.5 -37t131.5 -97l4 5q-9 109 -51.5 197t-110.5 154l-290 -165l-77 102l256 146q-39 22 -80.5 39t-85.5 31l60 164q79 -19 151 -52t135 -79l218 125l77 -102l-195 -112q95 -104 147 -241.5t52 -300.5v-220q0 -245 -144 -400.5 t-359 -155.5q-218 0 -357.5 140t-139.5 347zM269 466q0 -132 82 -232.5t222 -100.5q133 0 217.5 114t84.5 288v148q-35 59 -115.5 99.5t-198.5 40.5q-131 0 -211.5 -104t-80.5 -253z" />
+<glyph unicode="&#xf1;" d="M143 0v1082h176l14 -161q54 86 135.5 133.5t185.5 47.5q175 0 271 -102.5t96 -316.5v-683h-197v679q0 143 -56.5 203t-172.5 60q-85 0 -150.5 -41t-104.5 -112v-789h-197zM231 1306q0 93 59 161.5t150 68.5q56 0 140 -47t136 -47q41 0 71 32.5t30 79.5l108 -32 q0 -94 -59.5 -159t-149.5 -65q-71 0 -148 46.5t-128 46.5q-43 0 -72 -32.5t-29 -78.5z" />
+<glyph unicode="&#xf2;" d="M97 529v22q0 240 130 395.5t353 155.5q225 0 355.5 -155t130.5 -396v-22q0 -242 -130 -396t-354 -154t-354.5 154.5t-130.5 395.5zM257 1498l3 6h230l175 -266h-158zM294 529q0 -172 72.5 -284t215.5 -112q141 0 214 112t73 284v22q0 170 -73.5 283t-215.5 113 q-141 0 -213.5 -113t-72.5 -283v-22z" />
+<glyph unicode="&#xf3;" d="M97 529v22q0 240 130 395.5t353 155.5q225 0 355.5 -155t130.5 -396v-22q0 -242 -130 -396t-354 -154t-354.5 154.5t-130.5 395.5zM294 529q0 -172 72.5 -284t215.5 -112q141 0 214 112t73 284v22q0 170 -73.5 283t-215.5 113q-141 0 -213.5 -113t-72.5 -283v-22z M492 1234l185 266h230l2 -6l-270 -260h-147z" />
+<glyph unicode="&#xf4;" d="M97 529v22q0 240 130 395.5t353 155.5q225 0 355.5 -155t130.5 -396v-22q0 -242 -130 -396t-354 -154t-354.5 154.5t-130.5 395.5zM276 1279v26l246 237h120l248 -238v-25h-161l-147 148l-146 -148h-160zM294 529q0 -172 72.5 -284t215.5 -112q141 0 214 112t73 284v22 q0 170 -73.5 283t-215.5 113q-141 0 -213.5 -113t-72.5 -283v-22z" />
+<glyph unicode="&#xf5;" d="M97 529v22q0 240 130 395.5t353 155.5q225 0 355.5 -155t130.5 -396v-22q0 -242 -130 -396t-354 -154t-354.5 154.5t-130.5 395.5zM235 1306q0 93 59 161.5t150 68.5q56 0 140 -47t136 -47q41 0 71 32.5t30 79.5l108 -32q0 -94 -59.5 -159t-149.5 -65q-71 0 -148 46.5 t-128 46.5q-43 0 -72 -32.5t-29 -78.5zM294 529q0 -172 72.5 -284t215.5 -112q141 0 214 112t73 284v22q0 170 -73.5 283t-215.5 113q-141 0 -213.5 -113t-72.5 -283v-22z" />
+<glyph unicode="&#xf6;" d="M97 529v22q0 240 130 395.5t353 155.5q225 0 355.5 -155t130.5 -396v-22q0 -242 -130 -396t-354 -154t-354.5 154.5t-130.5 395.5zM238 1283v200h219v-200h-219zM294 529q0 -172 72.5 -284t215.5 -112q141 0 214 112t73 284v22q0 170 -73.5 283t-215.5 113 q-141 0 -213.5 -113t-72.5 -283v-22zM708 1283v200h219v-200h-219z" />
+<glyph unicode="&#xf7;" horiz-adv-x="1170" d="M71 597v188h998v-188h-998zM472 180v203h198v-203h-198zM472 999v203h198v-203h-198z" />
+<glyph unicode="&#xf8;" d="M97 529v22q0 240 130 395.5t353 155.5q56 0 107.5 -11t97.5 -31l74 149h129l-104 -211q88 -74 135 -190t47 -257v-22q0 -242 -130 -396t-354 -154q-51 0 -97 8.5t-88 24.5l-72 -147h-129l100 204q-96 71 -147.5 191t-51.5 269zM294 529q0 -91 20 -166.5t61 -123.5h6 l332 674q-29 16 -62.5 25t-70.5 9q-141 0 -213.5 -113t-72.5 -283v-22zM469 156q24 -12 52 -17.5t61 -5.5q141 0 214 112t73 284v22q0 80 -17.5 150.5t-49.5 117.5h-6z" />
+<glyph unicode="&#xf9;" d="M139 444v638h197v-640q0 -173 51 -238t159 -65q105 0 173.5 42.5t103.5 120.5v780h197v-1082h-177l-13 160q-51 -87 -131 -134t-185 -47q-177 0 -276 113t-99 352zM255 1477l3 6h230l175 -266h-158z" />
+<glyph unicode="&#xfa;" d="M139 444v638h197v-640q0 -173 51 -238t159 -65q105 0 173.5 42.5t103.5 120.5v780h197v-1082h-177l-13 160q-51 -87 -131 -134t-185 -47q-177 0 -276 113t-99 352zM490 1213l185 266h230l2 -6l-270 -260h-147z" />
+<glyph unicode="&#xfb;" d="M139 444v638h197v-640q0 -173 51 -238t159 -65q105 0 173.5 42.5t103.5 120.5v780h197v-1082h-177l-13 160q-51 -87 -131 -134t-185 -47q-177 0 -276 113t-99 352zM274 1258v26l246 237h120l248 -238v-25h-161l-147 148l-146 -148h-160z" />
+<glyph unicode="&#xfc;" d="M139 444v638h197v-640q0 -173 51 -238t159 -65q105 0 173.5 42.5t103.5 120.5v780h197v-1082h-177l-13 160q-51 -87 -131 -134t-185 -47q-177 0 -276 113t-99 352zM236 1262v200h219v-200h-219zM706 1262v200h219v-200h-219z" />
+<glyph unicode="&#xfd;" horiz-adv-x="1030" d="M26 1082h220l228 -681l35 -136h6l266 817h219l-455 -1248q-41 -109 -117.5 -190t-206.5 -81q-24 0 -61 5.5t-57 10.5l20 155q-6 1 35.5 -2t52.5 -3q63 0 103 56t67 124l47 113zM424 1213l185 266h230l2 -6l-270 -260h-147z" />
+<glyph unicode="&#xfe;" horiz-adv-x="1186" d="M153 -416v1976h197v-598q53 68 128 104t173 36q201 0 312.5 -159.5t111.5 -421.5v-21q0 -234 -112 -377.5t-309 -143.5q-100 0 -175.5 33.5t-128.5 100.5v-529h-197zM350 275q37 -67 97 -104.5t147 -37.5q140 0 212 102.5t72 264.5v21q0 184 -72.5 302.5t-213.5 118.5 q-85 0 -145 -38.5t-97 -105.5v-523z" />
+<glyph unicode="&#xff;" horiz-adv-x="1030" d="M26 1082h220l228 -681l35 -136h6l266 817h219l-455 -1248q-41 -109 -117.5 -190t-206.5 -81q-24 0 -61 5.5t-57 10.5l20 155q-6 1 35.5 -2t52.5 -3q63 0 103 56t67 124l47 113zM170 1262v200h219v-200h-219zM640 1262v200h219v-200h-219z" />
+<glyph unicode="&#x100;" horiz-adv-x="1326" d="M20 0l563 1456h169l554 -1456h-201l-136 375h-610l-138 -375h-201zM303 1640v146h721v-146h-721zM420 540h490l-240 663h-6z" />
+<glyph unicode="&#x101;" horiz-adv-x="1126" d="M106 304q0 155 125.5 242.5t340.5 87.5h214v107q0 95 -58 150.5t-164 55.5q-95 0 -154.5 -48.5t-59.5 -116.5h-188l-2 6q-6 118 111.5 216t303.5 98q184 0 296 -93.5t112 -269.5v-521q0 -58 6 -112t22 -106h-203q-10 49 -15.5 86.5t-6.5 75.5q-55 -78 -143.5 -130.5 t-190.5 -52.5q-169 0 -257.5 86.5t-88.5 238.5zM200 1318v146h721v-146h-721zM303 300q0 -72 45 -114t133 -42q107 0 193 55t112 126v176h-221q-119 0 -190.5 -60t-71.5 -141z" />
+<glyph unicode="&#x102;" horiz-adv-x="1326" d="M20 0l563 1456h169l554 -1456h-201l-136 375h-610l-138 -375h-201zM369 1864l2 6h151q0 -66 34 -107t108 -41q72 0 107 41.5t35 106.5h151l2 -6q4 -116 -77 -189t-218 -73q-138 0 -219 73t-76 189zM420 540h490l-240 663h-6z" />
+<glyph unicode="&#x103;" horiz-adv-x="1126" d="M106 304q0 155 125.5 242.5t340.5 87.5h214v107q0 95 -58 150.5t-164 55.5q-95 0 -154.5 -48.5t-59.5 -116.5h-188l-2 6q-6 118 111.5 216t303.5 98q184 0 296 -93.5t112 -269.5v-521q0 -58 6 -112t22 -106h-203q-10 49 -15.5 86.5t-6.5 75.5q-55 -78 -143.5 -130.5 t-190.5 -52.5q-169 0 -257.5 86.5t-88.5 238.5zM261 1542l2 6h151q0 -66 34 -107t108 -41q72 0 107 41.5t35 106.5h151l2 -6q4 -116 -77 -189t-218 -73q-138 0 -219 73t-76 189zM303 300q0 -72 45 -114t133 -42q107 0 193 55t112 126v176h-221q-119 0 -190.5 -60t-71.5 -141 z" />
+<glyph unicode="&#x104;" horiz-adv-x="1326" d="M20 0l563 1456h169l554 -1456h-201l-136 375h-610l-138 -375h-201zM420 540h490l-240 663h-6zM962 -223q0 80 60.5 152t187.5 128l72 -57q-70 -52 -109.5 -99.5t-39.5 -101.5q0 -42 22.5 -66t73.5 -24q27 0 50 7.5t49 18.5l33 -123q-36 -19 -79.5 -31.5t-103.5 -12.5 q-95 0 -155.5 55t-60.5 154z" />
+<glyph unicode="&#x105;" horiz-adv-x="1126" d="M106 304q0 155 125.5 242.5t340.5 87.5h214v107q0 95 -58 150.5t-164 55.5q-95 0 -154.5 -48.5t-59.5 -116.5h-188l-2 6q-6 118 111.5 216t303.5 98q184 0 296 -93.5t112 -269.5v-521q0 -58 6 -112t22 -106h-203q-10 49 -15.5 86.5t-6.5 75.5q-55 -78 -143.5 -130.5 t-190.5 -52.5q-169 0 -257.5 86.5t-88.5 238.5zM303 300q0 -72 45 -114t133 -42q107 0 193 55t112 126v176h-221q-119 0 -190.5 -60t-71.5 -141zM667 -223q0 80 60.5 152t187.5 128l72 -57q-70 -52 -109.5 -99.5t-39.5 -101.5q0 -42 22.5 -66t73.5 -24q27 0 50 7.5t49 18.5 l33 -123q-36 -19 -79.5 -31.5t-103.5 -12.5q-95 0 -155.5 55t-60.5 154z" />
+<glyph unicode="&#x106;" horiz-adv-x="1297" d="M118 598v259q0 269 155.5 444.5t402.5 175.5t393 -131.5t142 -348.5l-2 -6h-189q0 153 -90 242t-254 89q-165 0 -263 -133t-98 -330v-261q0 -199 98 -332t263 -133q164 0 254 88.5t90 244.5h189l2 -6q4 -205 -144 -343t-391 -138q-247 0 -402.5 175t-155.5 444zM588 1577 l185 266h230l2 -6l-270 -260h-147z" />
+<glyph unicode="&#x107;" horiz-adv-x="1087" d="M97 520v42q0 231 125.5 385.5t360.5 154.5q190 0 310.5 -112t116.5 -275l-2 -6h-178q0 99 -70 168.5t-177 69.5q-155 0 -221.5 -111.5t-66.5 -273.5v-42q0 -166 66 -276.5t222 -110.5q98 0 172.5 60.5t74.5 148.5h177l2 -6q5 -140 -124.5 -248.5t-301.5 -108.5 q-236 0 -361 154t-125 387zM447 1234l185 266h230l2 -6l-270 -260h-147z" />
+<glyph unicode="&#x108;" horiz-adv-x="1297" d="M118 598v259q0 269 155.5 444.5t402.5 175.5t393 -131.5t142 -348.5l-2 -6h-189q0 153 -90 242t-254 89q-165 0 -263 -133t-98 -330v-261q0 -199 98 -332t263 -133q164 0 254 88.5t90 244.5h189l2 -6q4 -205 -144 -343t-391 -138q-247 0 -402.5 175t-155.5 444zM372 1622 v26l246 237h120l248 -238v-25h-161l-147 148l-146 -148h-160z" />
+<glyph unicode="&#x109;" horiz-adv-x="1087" d="M97 520v42q0 231 125.5 385.5t360.5 154.5q190 0 310.5 -112t116.5 -275l-2 -6h-178q0 99 -70 168.5t-177 69.5q-155 0 -221.5 -111.5t-66.5 -273.5v-42q0 -166 66 -276.5t222 -110.5q98 0 172.5 60.5t74.5 148.5h177l2 -6q5 -140 -124.5 -248.5t-301.5 -108.5 q-236 0 -361 154t-125 387zM231 1279v26l246 237h120l248 -238v-25h-161l-147 148l-146 -148h-160z" />
+<glyph unicode="&#x10a;" horiz-adv-x="1297" d="M118 598v259q0 269 155.5 444.5t402.5 175.5t393 -131.5t142 -348.5l-2 -6h-189q0 153 -90 242t-254 89q-165 0 -263 -133t-98 -330v-261q0 -199 98 -332t263 -133q164 0 254 88.5t90 244.5h189l2 -6q4 -205 -144 -343t-391 -138q-247 0 -402.5 175t-155.5 444zM569 1625 v201h218v-201h-218z" />
+<glyph unicode="&#x10b;" horiz-adv-x="1087" d="M97 520v42q0 231 125.5 385.5t360.5 154.5q190 0 310.5 -112t116.5 -275l-2 -6h-178q0 99 -70 168.5t-177 69.5q-155 0 -221.5 -111.5t-66.5 -273.5v-42q0 -166 66 -276.5t222 -110.5q98 0 172.5 60.5t74.5 148.5h177l2 -6q5 -140 -124.5 -248.5t-301.5 -108.5 q-236 0 -361 154t-125 387zM428 1282v201h218v-201h-218z" />
+<glyph unicode="&#x10c;" horiz-adv-x="1297" d="M118 598v259q0 269 155.5 444.5t402.5 175.5t393 -131.5t142 -348.5l-2 -6h-189q0 153 -90 242t-254 89q-165 0 -263 -133t-98 -330v-261q0 -199 98 -332t263 -133q164 0 254 88.5t90 244.5h189l2 -6q4 -205 -144 -343t-391 -138q-247 0 -402.5 175t-155.5 444zM364 1866 v20h166l147 -148l147 148h170v-18l-257 -245h-119z" />
+<glyph unicode="&#x10d;" horiz-adv-x="1087" d="M97 520v42q0 231 125.5 385.5t360.5 154.5q190 0 310.5 -112t116.5 -275l-2 -6h-178q0 99 -70 168.5t-177 69.5q-155 0 -221.5 -111.5t-66.5 -273.5v-42q0 -166 66 -276.5t222 -110.5q98 0 172.5 60.5t74.5 148.5h177l2 -6q5 -140 -124.5 -248.5t-301.5 -108.5 q-236 0 -361 154t-125 387zM223 1523v20h166l147 -148l147 148h170v-18l-257 -245h-119z" />
+<glyph unicode="&#x10e;" horiz-adv-x="1349" d="M180 0v1456h447q286 0 459 -175.5t173 -453.5v-199q0 -279 -173 -453.5t-459 -174.5h-447zM306 1845v20h166l147 -148l147 148h170v-18l-257 -245h-119zM377 154h250q202 0 318.5 133t116.5 341v201q0 206 -116.5 339t-318.5 133h-250v-1147z" />
+<glyph unicode="&#x10f;" horiz-adv-x="1314" d="M98 500v21q0 261 111.5 421t312.5 160q95 0 168.5 -35t125.5 -102v595h197v-1560h-161l-23 133q-53 -76 -130 -115t-179 -39q-198 0 -310 143.5t-112 377.5zM295 500q0 -164 67 -262.5t208 -98.5q88 0 148 40t98 112v505q-38 67 -98.5 106.5t-145.5 39.5 q-142 0 -209.5 -117t-67.5 -304v-21zM1090 1183l61 246v131h158v-140l-122 -237h-97z" />
+<glyph unicode="&#x110;" horiz-adv-x="1379" d="M42 663v155h168v638h447q286 0 459 -175.5t173 -453.5v-199q0 -279 -173 -453.5t-459 -174.5h-447v663h-168zM407 154h250q202 0 318.5 133t116.5 341v201q0 206 -116.5 339t-318.5 133h-250v-483h276v-155h-276v-509z" />
+<glyph unicode="&#x111;" horiz-adv-x="1194" d="M98 500v21q0 261 111.5 421t312.5 160q95 0 168.5 -35t125.5 -102v266h-247v155h247v174h197v-174h197v-155h-197v-1231h-161l-23 133q-53 -76 -130 -115t-179 -39q-198 0 -310 143.5t-112 377.5zM295 500q0 -164 67 -262.5t208 -98.5q88 0 148 40t98 112v505 q-38 67 -98.5 106.5t-145.5 39.5q-142 0 -209.5 -117t-67.5 -304v-21z" />
+<glyph unicode="&#x112;" horiz-adv-x="1197" d="M180 0v1456h955v-155h-758v-471h667v-155h-667v-521h769v-154h-966zM273 1640v146h721v-146h-721z" />
+<glyph unicode="&#x113;" horiz-adv-x="1083" d="M99 520v44q0 231 137.5 384.5t325.5 153.5q219 0 331 -132t112 -352v-123h-702l-3 -5q3 -156 79 -256.5t213 -100.5q100 0 175.5 28.5t130.5 78.5l77 -128q-58 -57 -153 -95t-230 -38q-226 0 -359.5 150.5t-133.5 390.5zM203 1319v146h721v-146h-721zM307 654l2 -5h499 v26q0 116 -62 194t-184 78q-99 0 -169 -83.5t-86 -209.5z" />
+<glyph unicode="&#x114;" horiz-adv-x="1197" d="M180 0v1456h955v-155h-758v-471h667v-155h-667v-521h769v-154h-966zM334 1864l2 6h151q0 -66 34 -107t108 -41q72 0 107 41.5t35 106.5h151l2 -6q4 -116 -77 -189t-218 -73q-138 0 -219 73t-76 189z" />
+<glyph unicode="&#x115;" horiz-adv-x="1083" d="M99 520v44q0 231 137.5 384.5t325.5 153.5q219 0 331 -132t112 -352v-123h-702l-3 -5q3 -156 79 -256.5t213 -100.5q100 0 175.5 28.5t130.5 78.5l77 -128q-58 -57 -153 -95t-230 -38q-226 0 -359.5 150.5t-133.5 390.5zM264 1543l2 6h151q0 -66 34 -107t108 -41 q72 0 107 41.5t35 106.5h151l2 -6q4 -116 -77 -189t-218 -73q-138 0 -219 73t-76 189zM307 654l2 -5h499v26q0 116 -62 194t-184 78q-99 0 -169 -83.5t-86 -209.5z" />
+<glyph unicode="&#x116;" horiz-adv-x="1197" d="M180 0v1456h955v-155h-758v-471h667v-155h-667v-521h769v-154h-966zM519 1604v201h218v-201h-218z" />
+<glyph unicode="&#x117;" horiz-adv-x="1083" d="M99 520v44q0 231 137.5 384.5t325.5 153.5q219 0 331 -132t112 -352v-123h-702l-3 -5q3 -156 79 -256.5t213 -100.5q100 0 175.5 28.5t130.5 78.5l77 -128q-58 -57 -153 -95t-230 -38q-226 0 -359.5 150.5t-133.5 390.5zM307 654l2 -5h499v26q0 116 -62 194t-184 78 q-99 0 -169 -83.5t-86 -209.5zM449 1283v201h218v-201h-218z" />
+<glyph unicode="&#x118;" horiz-adv-x="1197" d="M180 0v1456h955v-155h-758v-471h667v-155h-667v-521h769v-154h-966zM399 -223q0 80 60.5 152t187.5 128l72 -57q-70 -52 -109.5 -99.5t-39.5 -101.5q0 -42 22.5 -66t73.5 -24q27 0 50 7.5t49 18.5l33 -123q-36 -19 -79.5 -31.5t-103.5 -12.5q-95 0 -155.5 55t-60.5 154z " />
+<glyph unicode="&#x119;" horiz-adv-x="1083" d="M99 520v44q0 231 137.5 384.5t325.5 153.5q219 0 331 -132t112 -352v-123h-702l-3 -5q3 -156 79 -256.5t213 -100.5q100 0 175.5 28.5t130.5 78.5l77 -128q-58 -57 -153 -95t-230 -38q-226 0 -359.5 150.5t-133.5 390.5zM307 654l2 -5h499v26q0 116 -62 194t-184 78 q-99 0 -169 -83.5t-86 -209.5zM560 -161q0 80 60.5 152t187.5 128l72 -57q-70 -52 -109.5 -99.5t-39.5 -101.5q0 -42 22.5 -66t73.5 -24q27 0 50 7.5t49 18.5l33 -123q-36 -19 -79.5 -31.5t-103.5 -12.5q-95 0 -155.5 55t-60.5 154z" />
+<glyph unicode="&#x11a;" horiz-adv-x="1197" d="M180 0v1456h955v-155h-758v-471h667v-155h-667v-521h769v-154h-966zM314 1845v20h166l147 -148l147 148h170v-18l-257 -245h-119z" />
+<glyph unicode="&#x11b;" horiz-adv-x="1083" d="M99 520v44q0 231 137.5 384.5t325.5 153.5q219 0 331 -132t112 -352v-123h-702l-3 -5q3 -156 79 -256.5t213 -100.5q100 0 175.5 28.5t130.5 78.5l77 -128q-58 -57 -153 -95t-230 -38q-226 0 -359.5 150.5t-133.5 390.5zM244 1524v20h166l147 -148l147 148h170v-18 l-257 -245h-119zM307 654l2 -5h499v26q0 116 -62 194t-184 78q-99 0 -169 -83.5t-86 -209.5z" />
+<glyph unicode="&#x11c;" horiz-adv-x="1396" d="M120 578v300q0 265 159 432t410 167q250 0 393 -123t146 -317l-2 -6h-188q-9 127 -96.5 209t-252.5 82q-167 0 -269 -125t-102 -317v-302q0 -194 114 -319.5t290 -125.5q124 0 203 33t113 75v331h-319v155h516v-534q-52 -80 -180.5 -147t-332.5 -67q-261 0 -431.5 167 t-170.5 432zM362 1622v26l246 237h120l248 -238v-25h-161l-147 148l-146 -148h-160z" />
+<glyph unicode="&#x11d;" d="M100 500v21q0 261 114 421t315 160q103 0 181 -41.5t130 -119.5l24 141h157v-1088q0 -208 -121 -319.5t-349 -111.5q-78 0 -168.5 21.5t-159.5 58.5l50 153q53 -30 128 -48.5t148 -18.5q144 0 209.5 65.5t65.5 199.5v122q-53 -68 -127 -102.5t-170 -34.5q-199 0 -313 144 t-114 377zM258 1279v26l246 237h120l248 -238v-25h-161l-147 148l-146 -148h-160zM297 500q0 -163 69 -262t210 -99q89 0 149 40.5t99 114.5v498q-38 69 -99 109.5t-147 40.5q-141 0 -211 -118t-70 -303v-21z" />
+<glyph unicode="&#x11e;" horiz-adv-x="1396" d="M120 578v300q0 265 159 432t410 167q250 0 393 -123t146 -317l-2 -6h-188q-9 127 -96.5 209t-252.5 82q-167 0 -269 -125t-102 -317v-302q0 -194 114 -319.5t290 -125.5q124 0 203 33t113 75v331h-319v155h516v-534q-52 -80 -180.5 -147t-332.5 -67q-261 0 -431.5 167 t-170.5 432zM374 1885l2 6h151q0 -66 34 -107t108 -41q72 0 107 41.5t35 106.5h151l2 -6q4 -116 -77 -189t-218 -73q-138 0 -219 73t-76 189z" />
+<glyph unicode="&#x11f;" d="M100 500v21q0 261 114 421t315 160q103 0 181 -41.5t130 -119.5l24 141h157v-1088q0 -208 -121 -319.5t-349 -111.5q-78 0 -168.5 21.5t-159.5 58.5l50 153q53 -30 128 -48.5t148 -18.5q144 0 209.5 65.5t65.5 199.5v122q-53 -68 -127 -102.5t-170 -34.5q-199 0 -313 144 t-114 377zM270 1542l2 6h151q0 -66 34 -107t108 -41q72 0 107 41.5t35 106.5h151l2 -6q4 -116 -77 -189t-218 -73q-138 0 -219 73t-76 189zM297 500q0 -163 69 -262t210 -99q89 0 149 40.5t99 114.5v498q-38 69 -99 109.5t-147 40.5q-141 0 -211 -118t-70 -303v-21z" />
+<glyph unicode="&#x120;" horiz-adv-x="1396" d="M120 578v300q0 265 159 432t410 167q250 0 393 -123t146 -317l-2 -6h-188q-9 127 -96.5 209t-252.5 82q-167 0 -269 -125t-102 -317v-302q0 -194 114 -319.5t290 -125.5q124 0 203 33t113 75v331h-319v155h516v-534q-52 -80 -180.5 -147t-332.5 -67q-261 0 -431.5 167 t-170.5 432zM559 1625v201h218v-201h-218z" />
+<glyph unicode="&#x121;" d="M100 500v21q0 261 114 421t315 160q103 0 181 -41.5t130 -119.5l24 141h157v-1088q0 -208 -121 -319.5t-349 -111.5q-78 0 -168.5 21.5t-159.5 58.5l50 153q53 -30 128 -48.5t148 -18.5q144 0 209.5 65.5t65.5 199.5v122q-53 -68 -127 -102.5t-170 -34.5q-199 0 -313 144 t-114 377zM297 500q0 -163 69 -262t210 -99q89 0 149 40.5t99 114.5v498q-38 69 -99 109.5t-147 40.5q-141 0 -211 -118t-70 -303v-21zM455 1282v201h218v-201h-218z" />
+<glyph unicode="&#x122;" horiz-adv-x="1396" d="M120 578v300q0 265 159 432t410 167q250 0 393 -123t146 -317l-2 -6h-188q-9 127 -96.5 209t-252.5 82q-167 0 -269 -125t-102 -317v-302q0 -194 114 -319.5t290 -125.5q124 0 203 33t113 75v331h-319v155h516v-534q-52 -80 -180.5 -147t-332.5 -67q-261 0 -431.5 167 t-170.5 432zM521 -494l61 246v131h158v-140l-122 -237h-97z" />
+<glyph unicode="&#x123;" d="M100 500v21q0 261 114 421t315 160q103 0 181 -41.5t130 -119.5l24 141h157v-1088q0 -208 -121 -319.5t-349 -111.5q-78 0 -168.5 21.5t-159.5 58.5l50 153q53 -30 128 -48.5t148 -18.5q144 0 209.5 65.5t65.5 199.5v122q-53 -68 -127 -102.5t-170 -34.5q-199 0 -313 144 t-114 377zM297 500q0 -163 69 -262t210 -99q89 0 149 40.5t99 114.5v498q-38 69 -99 109.5t-147 40.5q-141 0 -211 -118t-70 -303v-21zM459 1253v148l121 247h97l-21 -257v-138h-197z" />
+<glyph unicode="&#x124;" horiz-adv-x="1461" d="M180 0v1456h197v-658h707v658h197v-1456h-197v643h-707v-643h-197zM415 1601v26l246 237h120l248 -238v-25h-161l-147 148l-146 -148h-160z" />
+<glyph unicode="&#x125;" d="M143 0v1560h197v-623q56 78 137.5 121.5t180.5 43.5q173 0 269.5 -104t96.5 -320v-678h-197v680q0 134 -57.5 198t-171.5 64q-82 0 -148.5 -38.5t-109.5 -104.5v-799h-197zM203 1600v26l246 237h120l248 -238v-25h-161l-147 148l-146 -148h-160z" />
+<glyph unicode="&#x126;" horiz-adv-x="1439" d="M31 1024v145h147v287h197v-287h707v287h197v-287h144v-145h-144v-1024h-197v643h-707v-643h-197v1024h-147zM375 798h707v226h-707v-226z" />
+<glyph unicode="&#x127;" horiz-adv-x="1194" d="M1 1231v155h172v174h197v-174h272v-155h-272v-294q56 78 137.5 121.5t180.5 43.5q173 0 269.5 -104t96.5 -320v-678h-197v680q0 134 -57.5 198t-171.5 64q-82 0 -148.5 -38.5t-109.5 -104.5v-799h-197v1231h-172z" />
+<glyph unicode="&#x128;" horiz-adv-x="579" d="M-56 1628q0 93 59 161.5t150 68.5q56 0 140 -47t136 -47q41 0 71 32.5t30 79.5l108 -32q0 -94 -59.5 -159t-149.5 -65q-71 0 -148 46.5t-128 46.5q-43 0 -72 -32.5t-29 -78.5zM190 0v1456h198v-1456h-198z" />
+<glyph unicode="&#x129;" horiz-adv-x="515" d="M-93 1285q0 93 59 161.5t150 68.5q56 0 140 -47t136 -47q41 0 71 32.5t30 79.5l108 -32q0 -94 -59.5 -159t-149.5 -65q-71 0 -148 46.5t-128 46.5q-43 0 -72 -32.5t-29 -78.5zM153 0v1082h197v-1082h-197z" />
+<glyph unicode="&#x12a;" horiz-adv-x="579" d="M-64 1640v146h721v-146h-721zM190 0v1456h198v-1456h-198z" />
+<glyph unicode="&#x12b;" horiz-adv-x="515" d="M-101 1299v146h721v-146h-721zM153 0v1082h197v-1082h-197z" />
+<glyph unicode="&#x12c;" horiz-adv-x="579" d="M-3 1864l2 6h151q0 -66 34 -107t108 -41q72 0 107 41.5t35 106.5h151l2 -6q4 -116 -77 -189t-218 -73q-138 0 -219 73t-76 189zM190 0v1456h198v-1456h-198z" />
+<glyph unicode="&#x12d;" horiz-adv-x="515" d="M-40 1521l2 6h151q0 -66 34 -107t108 -41q72 0 107 41.5t35 106.5h151l2 -6q4 -116 -77 -189t-218 -73q-138 0 -219 73t-76 189zM153 0v1082h197v-1082h-197z" />
+<glyph unicode="&#x12e;" horiz-adv-x="579" d="M46 -223q0 80 60.5 152t187.5 128l72 -57q-70 -52 -109.5 -99.5t-39.5 -101.5q0 -42 22.5 -66t73.5 -24q27 0 50 7.5t49 18.5l33 -123q-36 -19 -79.5 -31.5t-103.5 -12.5q-95 0 -155.5 55t-60.5 154zM190 0v1456h198v-1456h-198z" />
+<glyph unicode="&#x12f;" horiz-adv-x="516" d="M14 -223q0 80 60.5 152t187.5 128l72 -57q-70 -52 -109.5 -99.5t-39.5 -101.5q0 -42 22.5 -66t73.5 -24q27 0 50 7.5t49 18.5l33 -123q-36 -19 -79.5 -31.5t-103.5 -12.5q-95 0 -155.5 55t-60.5 154zM159 0v1082h197v-1082h-197zM159 1359v201h197v-201h-197z" />
+<glyph unicode="&#x130;" horiz-adv-x="579" d="M180 1604v201h218v-201h-218zM190 0v1456h198v-1456h-198z" />
+<glyph unicode="&#x131;" horiz-adv-x="515" d="M153 0v1082h197v-1082h-197z" />
+<glyph unicode="&#x132;" horiz-adv-x="1709" d="M190 0v1456h198v-1456h-198zM645 395l2 6h189q0 -135 68.5 -201.5t193.5 -66.5q109 0 178 73.5t69 196.5v1053h197v-1053q0 -195 -123.5 -309.5t-320.5 -114.5q-210 0 -334 106.5t-119 309.5z" />
+<glyph unicode="&#x133;" horiz-adv-x="1046" d="M159 0v1082h197v-1082h-197zM159 1359v201h197v-201h-197zM450 -419l14 155q14 -5 40 -8.5t43 -3.5q65 0 103.5 44t38.5 143v1171h197v-1171q0 -167 -86 -257.5t-239 -90.5q-31 0 -56.5 4.5t-54.5 13.5zM683 1363v197h197v-197h-197z" />
+<glyph unicode="&#x134;" horiz-adv-x="1130" d="M66 395l2 6h189q0 -135 68.5 -201.5t193.5 -66.5q109 0 178 73.5t69 196.5v1053h197v-1053q0 -195 -123.5 -309.5t-320.5 -114.5q-210 0 -334 106.5t-119 309.5zM550 1589v26l246 237h120l248 -238v-25h-161l-147 148l-146 -148h-160z" />
+<glyph unicode="&#x135;" horiz-adv-x="523" d="M-68 -419l14 150q14 -5 46.5 -9t50.5 -4q59 0 93.5 51.5t34.5 141.5v1171h197v-1171q0 -167 -86 -257.5t-239 -90.5q-31 0 -56.5 4.5t-54.5 13.5zM-34 1240v26l246 237h120l248 -238v-25h-161l-147 148l-146 -148h-160z" />
+<glyph unicode="&#x136;" horiz-adv-x="1317" d="M180 0v1456h197v-644h152l521 644h218l3 -5l-565 -699l606 -747l-3 -5h-235l-527 657h-170v-657h-197zM487 -477l61 246v131h158v-140l-122 -237h-97z" />
+<glyph unicode="&#x137;" horiz-adv-x="1050" d="M144 0v1560h197v-904h126l296 426h236l-370 -492l423 -590h-232l-351 499h-128v-499h-197zM388 -475l61 246v131h158v-140l-122 -237h-97z" />
+<glyph unicode="&#x138;" horiz-adv-x="1144" d="M153 0v1082h197v-457h84l388 457h231l2 -5l-450 -514l483 -558l-2 -5h-241l-394 459h-101v-459h-197z" />
+<glyph unicode="&#x139;" horiz-adv-x="1106" d="M180 0v1456h197v-1302h689v-154h-886zM186 1556l185 266h230l2 -6l-270 -260h-147z" />
+<glyph unicode="&#x13a;" horiz-adv-x="516" d="M159 0v1560h197v-1560h-197zM168 1594l185 266h230l2 -6l-270 -260h-147z" />
+<glyph unicode="&#x13b;" horiz-adv-x="1106" d="M180 0v1456h197v-1302h689v-154h-886zM480 -475l61 246v131h158v-140l-122 -237h-97z" />
+<glyph unicode="&#x13c;" horiz-adv-x="516" d="M110 -475l61 246v131h158v-140l-122 -237h-97zM159 0v1560h197v-1560h-197z" />
+<glyph unicode="&#x13d;" horiz-adv-x="1106" d="M180 0v1456h197v-1302h689v-154h-886zM583 1080l61 246v131h158v-140l-122 -237h-97z" />
+<glyph unicode="&#x13e;" horiz-adv-x="666" d="M159 0v1560h197v-1560h-197zM453 1183l61 246v131h158v-140l-122 -237h-97z" />
+<glyph unicode="&#x13f;" horiz-adv-x="1106" d="M180 0v1456h197v-1302h689v-154h-886zM613 688v201h218v-201h-218z" />
+<glyph unicode="&#x140;" horiz-adv-x="736" d="M159 0v1560h197v-1560h-197zM485 671v201h218v-201h-218z" />
+<glyph unicode="&#x141;" horiz-adv-x="1077" d="M40 576v166l123 39v675h197v-613l269 86v-166l-269 -86v-523h689v-154h-886v615z" />
+<glyph unicode="&#x142;" horiz-adv-x="558" d="M37 578v165l142 54v763h197v-688l150 58v-165l-150 -58v-707h-197v632z" />
+<glyph unicode="&#x143;" horiz-adv-x="1461" d="M180 0v1456h197l701 -1124l6 2v1122h197v-1456h-197l-701 1126l-6 -2v-1124h-197zM638 1556l185 266h230l2 -6l-270 -260h-147z" />
+<glyph unicode="&#x144;" d="M143 0v1082h176l14 -161q54 86 135.5 133.5t185.5 47.5q175 0 271 -102.5t96 -316.5v-683h-197v679q0 143 -56.5 203t-172.5 60q-85 0 -150.5 -41t-104.5 -112v-789h-197zM488 1234l185 266h230l2 -6l-270 -260h-147z" />
+<glyph unicode="&#x145;" horiz-adv-x="1461" d="M180 0v1456h197l701 -1124l6 2v1122h197v-1456h-197l-701 1126l-6 -2v-1124h-197zM580 -475l61 246v131h158v-140l-122 -237h-97z" />
+<glyph unicode="&#x146;" d="M143 0v1082h176l14 -161q54 86 135.5 133.5t185.5 47.5q175 0 271 -102.5t96 -316.5v-683h-197v679q0 143 -56.5 203t-172.5 60q-85 0 -150.5 -41t-104.5 -112v-789h-197zM430 -475l61 246v131h158v-140l-122 -237h-97z" />
+<glyph unicode="&#x147;" horiz-adv-x="1461" d="M180 0v1456h197l701 -1124l6 2v1122h197v-1456h-197l-701 1126l-6 -2v-1124h-197zM414 1845v20h166l147 -148l147 148h170v-18l-257 -245h-119z" />
+<glyph unicode="&#x148;" d="M143 0v1082h176l14 -161q54 86 135.5 133.5t185.5 47.5q175 0 271 -102.5t96 -316.5v-683h-197v679q0 143 -56.5 203t-172.5 60q-85 0 -150.5 -41t-104.5 -112v-789h-197zM264 1523v20h166l147 -148l147 148h170v-18l-257 -245h-119z" />
+<glyph unicode="&#x149;" d="M-32 1183l61 246v131h158v-140l-122 -237h-97zM143 0v1082h176l14 -161q54 86 135.5 133.5t185.5 47.5q175 0 271 -102.5t96 -316.5v-683h-197v679q0 143 -56.5 203t-172.5 60q-85 0 -150.5 -41t-104.5 -112v-789h-197z" />
+<glyph unicode="&#x14a;" horiz-adv-x="1416" d="M161 0v1456h197l701 -1112l6 2v1110h197v-1545q0 -167 -86 -257.5t-240 -90.5q-31 0 -57 4.5t-55 13.5l14 150q13 -5 47 -9t51 -4q60 0 94.5 51.5t34.5 141.5v89l-701 1112l-6 -2v-1110h-197z" />
+<glyph unicode="&#x14b;" d="M143 0v1082h176l13 -150q54 81 134 125.5t181 44.5q174 0 270 -102.5t96 -316.5v-772q0 -167 -86 -257.5t-240 -90.5q-31 0 -57.5 4.5t-54.5 13.5l14 160q13 -5 46.5 -8.5t51.5 -3.5q61 0 95 47t34 135v768q0 143 -57 203t-173 60q-85 0 -146.5 -33t-99.5 -92v-817h-197z " />
+<glyph unicode="&#x14c;" horiz-adv-x="1396" d="M113 598v259q0 266 159.5 443t414.5 177q264 0 429.5 -176.5t165.5 -443.5v-259q0 -267 -165.5 -443t-429.5 -176q-255 0 -414.5 176t-159.5 443zM310 598q0 -202 102.5 -330t274.5 -128q183 0 290.5 127.5t107.5 330.5v261q0 200 -108 328t-290 128q-172 0 -274.5 -128 t-102.5 -328v-261zM343 1661v146h721v-146h-721z" />
+<glyph unicode="&#x14d;" d="M97 529v22q0 240 130 395.5t353 155.5q225 0 355.5 -155t130.5 -396v-22q0 -242 -130 -396t-354 -154t-354.5 154.5t-130.5 395.5zM227 1318v146h721v-146h-721zM294 529q0 -172 72.5 -284t215.5 -112q141 0 214 112t73 284v22q0 170 -73.5 283t-215.5 113 q-141 0 -213.5 -113t-72.5 -283v-22z" />
+<glyph unicode="&#x14e;" horiz-adv-x="1396" d="M113 598v259q0 266 159.5 443t414.5 177q264 0 429.5 -176.5t165.5 -443.5v-259q0 -267 -165.5 -443t-429.5 -176q-255 0 -414.5 176t-159.5 443zM310 598q0 -202 102.5 -330t274.5 -128q183 0 290.5 127.5t107.5 330.5v261q0 200 -108 328t-290 128q-172 0 -274.5 -128 t-102.5 -328v-261zM404 1885l2 6h151q0 -66 34 -107t108 -41q72 0 107 41.5t35 106.5h151l2 -6q4 -116 -77 -189t-218 -73q-138 0 -219 73t-76 189z" />
+<glyph unicode="&#x14f;" d="M97 529v22q0 240 130 395.5t353 155.5q225 0 355.5 -155t130.5 -396v-22q0 -242 -130 -396t-354 -154t-354.5 154.5t-130.5 395.5zM288 1542l2 6h151q0 -66 34 -107t108 -41q72 0 107 41.5t35 106.5h151l2 -6q4 -116 -77 -189t-218 -73q-138 0 -219 73t-76 189zM294 529 q0 -172 72.5 -284t215.5 -112q141 0 214 112t73 284v22q0 170 -73.5 283t-215.5 113q-141 0 -213.5 -113t-72.5 -283v-22z" />
+<glyph unicode="&#x150;" horiz-adv-x="1396" d="M113 598v259q0 266 159.5 443t414.5 177q264 0 429.5 -176.5t165.5 -443.5v-259q0 -267 -165.5 -443t-429.5 -176q-255 0 -414.5 176t-159.5 443zM310 598q0 -202 102.5 -330t274.5 -128q183 0 290.5 127.5t107.5 330.5v261q0 200 -108 328t-290 128q-172 0 -274.5 -128 t-102.5 -328v-261zM462 1622l184 266h211l2 -5l-240 -261h-157zM731 1627l241 261h229l3 -6l-300 -260h-171z" />
+<glyph unicode="&#x151;" d="M97 529v22q0 240 130 395.5t353 155.5q225 0 355.5 -155t130.5 -396v-22q0 -242 -130 -396t-354 -154t-354.5 154.5t-130.5 395.5zM294 529q0 -172 72.5 -284t215.5 -112q141 0 214 112t73 284v22q0 170 -73.5 283t-215.5 113q-141 0 -213.5 -113t-72.5 -283v-22z M346 1279l184 266h211l2 -5l-240 -261h-157zM615 1284l241 261h229l3 -6l-300 -260h-171z" />
+<glyph unicode="&#x152;" horiz-adv-x="1960" d="M104 576v304q0 265 154.5 431t403.5 166q69 0 140.5 -6t150.5 -15h907v-155h-758v-471h667v-155h-667v-521h769v-154h-918q-92 -10 -157 -15.5t-132 -5.5q-249 0 -404.5 166t-155.5 431zM301 576q0 -214 97 -328t266 -114q61 0 122 4.5t119 13.5v1151q-61 8 -122 13.5 t-121 5.5q-169 0 -265 -113.5t-96 -326.5v-306z" />
+<glyph unicode="&#x153;" horiz-adv-x="1854" d="M97 529v22q0 240 130 395.5t353 155.5q130 0 230 -54.5t164 -152.5q65 97 161.5 152t204.5 55q219 0 331 -132t112 -352v-123h-702l-3 -5q3 -156 79 -256.5t213 -100.5q100 0 175.5 28.5t130.5 78.5l77 -128q-58 -57 -153 -95t-230 -38q-131 0 -232.5 52.5t-166.5 148.5 q-64 -96 -163 -148.5t-226 -52.5q-224 0 -354.5 154.5t-130.5 395.5zM294 529q0 -172 72.5 -284t215.5 -112q141 0 214 112t73 284v22q0 170 -73.5 283t-215.5 113q-141 0 -213.5 -113t-72.5 -283v-22zM1085 654l2 -5h499v26q0 116 -62 194t-184 78q-99 0 -169 -83.5 t-86 -209.5z" />
+<glyph unicode="&#x154;" horiz-adv-x="1357" d="M180 0v1455h527q239 0 365 -106t126 -308q0 -112 -58.5 -195t-170.5 -132q120 -39 172.5 -126.5t52.5 -216.5v-137q0 -68 15 -122t52 -88v-24h-203q-39 34 -50 100t-11 136v133q0 118 -69 190t-185 72h-366v-631h-197zM377 786h310q167 0 240.5 63.5t73.5 193.5 q0 123 -71.5 190.5t-222.5 67.5h-330v-515zM530 1556l185 266h230l2 -6l-270 -260h-147z" />
+<glyph unicode="&#x155;" horiz-adv-x="702" d="M143 0v1082h176l19 -158q46 84 113.5 131t155.5 47q22 0 42 -3.5t33 -7.5l-27 -183l-101 6q-78 0 -131.5 -37t-82.5 -104v-773h-197zM323 1234l185 266h230l2 -6l-270 -260h-147z" />
+<glyph unicode="&#x156;" horiz-adv-x="1357" d="M180 0v1455h527q239 0 365 -106t126 -308q0 -112 -58.5 -195t-170.5 -132q120 -39 172.5 -126.5t52.5 -216.5v-137q0 -68 15 -122t52 -88v-24h-203q-39 34 -50 100t-11 136v133q0 118 -69 190t-185 72h-366v-631h-197zM377 786h310q167 0 240.5 63.5t73.5 193.5 q0 123 -71.5 190.5t-222.5 67.5h-330v-515zM472 -475l61 246v131h158v-140l-122 -237h-97z" />
+<glyph unicode="&#x157;" horiz-adv-x="702" d="M107 -475l61 246v131h158v-140l-122 -237h-97zM143 0v1082h176l19 -158q46 84 113.5 131t155.5 47q22 0 42 -3.5t33 -7.5l-27 -183l-101 6q-78 0 -131.5 -37t-82.5 -104v-773h-197z" />
+<glyph unicode="&#x158;" horiz-adv-x="1357" d="M180 0v1455h527q239 0 365 -106t126 -308q0 -112 -58.5 -195t-170.5 -132q120 -39 172.5 -126.5t52.5 -216.5v-137q0 -68 15 -122t52 -88v-24h-203q-39 34 -50 100t-11 136v133q0 118 -69 190t-185 72h-366v-631h-197zM306 1845v20h166l147 -148l147 148h170v-18 l-257 -245h-119zM377 786h310q167 0 240.5 63.5t73.5 193.5q0 123 -71.5 190.5t-222.5 67.5h-330v-515z" />
+<glyph unicode="&#x159;" horiz-adv-x="702" d="M101 1523v20h166l147 -148l147 148h170v-18l-257 -245h-119zM143 0v1082h176l19 -158q46 84 113.5 131t155.5 47q22 0 42 -3.5t33 -7.5l-27 -183l-101 6q-78 0 -131.5 -37t-82.5 -104v-773h-197z" />
+<glyph unicode="&#x15a;" horiz-adv-x="1277" d="M102 413l2 6h188q0 -140 103 -213t255 -73q149 0 236 63t87 171q0 100 -75 167.5t-266 113.5q-231 55 -360.5 162t-129.5 269q0 170 139.5 284t361.5 114q239 0 380.5 -131t136.5 -304l-2 -6h-188q0 128 -84.5 207t-242.5 79q-147 0 -225.5 -66.5t-78.5 -173.5 q0 -95 85 -158.5t276 -111.5q230 -57 350 -168t120 -275q0 -176 -144 -283t-376 -107q-218 0 -385.5 118t-162.5 316zM523 1577l185 266h230l2 -6l-270 -260h-147z" />
+<glyph unicode="&#x15b;" horiz-adv-x="1071" d="M109 329l2 6h188q5 -105 78 -153.5t171 -48.5q105 0 164.5 42.5t59.5 111.5q0 65 -49.5 107t-187.5 73q-197 43 -296.5 116.5t-99.5 200.5q0 132 112 225t292 93q189 0 300.5 -97t106.5 -236l-2 -6h-188q0 71 -59.5 127.5t-157.5 56.5q-105 0 -156 -46t-51 -111 q0 -64 45 -101t183 -66q205 -44 305 -119.5t100 -202.5q0 -144 -116.5 -233t-304.5 -89q-207 0 -326 105t-113 245zM445 1234l185 266h230l2 -6l-270 -260h-147z" />
+<glyph unicode="&#x15c;" horiz-adv-x="1277" d="M102 413l2 6h188q0 -140 103 -213t255 -73q149 0 236 63t87 171q0 100 -75 167.5t-266 113.5q-231 55 -360.5 162t-129.5 269q0 170 139.5 284t361.5 114q239 0 380.5 -131t136.5 -304l-2 -6h-188q0 128 -84.5 207t-242.5 79q-147 0 -225.5 -66.5t-78.5 -173.5 q0 -95 85 -158.5t276 -111.5q230 -57 350 -168t120 -275q0 -176 -144 -283t-376 -107q-218 0 -385.5 118t-162.5 316zM307 1622v26l246 237h120l248 -238v-25h-161l-147 148l-146 -148h-160z" />
+<glyph unicode="&#x15d;" horiz-adv-x="1071" d="M109 329l2 6h188q5 -105 78 -153.5t171 -48.5q105 0 164.5 42.5t59.5 111.5q0 65 -49.5 107t-187.5 73q-197 43 -296.5 116.5t-99.5 200.5q0 132 112 225t292 93q189 0 300.5 -97t106.5 -236l-2 -6h-188q0 71 -59.5 127.5t-157.5 56.5q-105 0 -156 -46t-51 -111 q0 -64 45 -101t183 -66q205 -44 305 -119.5t100 -202.5q0 -144 -116.5 -233t-304.5 -89q-207 0 -326 105t-113 245zM229 1279v26l246 237h120l248 -238v-25h-161l-147 148l-146 -148h-160z" />
+<glyph unicode="&#x15e;" horiz-adv-x="1277" d="M102 413l2 6h188q0 -140 103 -213t255 -73q149 0 236 63t87 171q0 100 -75 167.5t-266 113.5q-231 55 -360.5 162t-129.5 269q0 170 139.5 284t361.5 114q239 0 380.5 -131t136.5 -304l-2 -6h-188q0 128 -84.5 207t-242.5 79q-147 0 -225.5 -66.5t-78.5 -173.5 q0 -95 85 -158.5t276 -111.5q230 -57 350 -168t120 -275q0 -176 -144 -283t-376 -107q-218 0 -385.5 118t-162.5 316zM516 -334q72 0 116 24.5t44 73.5q0 48 -36 67t-123 26l32 135h140l-12 -52q65 -11 108 -52t43 -121q0 -96 -79 -153t-226 -57z" />
+<glyph unicode="&#x15f;" horiz-adv-x="1071" d="M109 329l2 6h188q5 -105 78 -153.5t171 -48.5q105 0 164.5 42.5t59.5 111.5q0 65 -49.5 107t-187.5 73q-197 43 -296.5 116.5t-99.5 200.5q0 132 112 225t292 93q189 0 300.5 -97t106.5 -236l-2 -6h-188q0 71 -59.5 127.5t-157.5 56.5q-105 0 -156 -46t-51 -111 q0 -64 45 -101t183 -66q205 -44 305 -119.5t100 -202.5q0 -144 -116.5 -233t-304.5 -89q-207 0 -326 105t-113 245zM438 -333q72 0 116 24.5t44 73.5q0 48 -36 67t-123 26l32 135h140l-12 -52q65 -11 108 -52t43 -121q0 -96 -79 -153t-226 -57z" />
+<glyph unicode="&#x160;" horiz-adv-x="1277" d="M102 413l2 6h188q0 -140 103 -213t255 -73q149 0 236 63t87 171q0 100 -75 167.5t-266 113.5q-231 55 -360.5 162t-129.5 269q0 170 139.5 284t361.5 114q239 0 380.5 -131t136.5 -304l-2 -6h-188q0 128 -84.5 207t-242.5 79q-147 0 -225.5 -66.5t-78.5 -173.5 q0 -95 85 -158.5t276 -111.5q230 -57 350 -168t120 -275q0 -176 -144 -283t-376 -107q-218 0 -385.5 118t-162.5 316zM299 1866v20h166l147 -148l147 148h170v-18l-257 -245h-119z" />
+<glyph unicode="&#x161;" horiz-adv-x="1071" d="M109 329l2 6h188q5 -105 78 -153.5t171 -48.5q105 0 164.5 42.5t59.5 111.5q0 65 -49.5 107t-187.5 73q-197 43 -296.5 116.5t-99.5 200.5q0 132 112 225t292 93q189 0 300.5 -97t106.5 -236l-2 -6h-188q0 71 -59.5 127.5t-157.5 56.5q-105 0 -156 -46t-51 -111 q0 -64 45 -101t183 -66q205 -44 305 -119.5t100 -202.5q0 -144 -116.5 -233t-304.5 -89q-207 0 -326 105t-113 245zM221 1523v20h166l147 -148l147 148h170v-18l-257 -245h-119z" />
+<glyph unicode="&#x162;" horiz-adv-x="1200" d="M34 1301v155h1132v-155h-468v-1301h-197v1301h-467zM455 -475l61 246v131h158v-140l-122 -237h-97z" />
+<glyph unicode="&#x163;" horiz-adv-x="708" d="M34 936v146h172v261h197v-261h205v-146h-205v-657q0 -76 31.5 -107t83.5 -31q17 0 37.5 4t36.5 10l26 -135q-22 -18 -64.5 -29.5t-85.5 -11.5q-120 0 -191 72.5t-71 227.5v657h-172zM308 -485l61 246v131h158v-140l-122 -237h-97z" />
+<glyph unicode="&#x164;" horiz-adv-x="1200" d="M34 1301v155h1132v-155h-468v-1301h-197v1301h-467zM289 1844v20h166l147 -148l147 148h170v-18l-257 -245h-119z" />
+<glyph unicode="&#x165;" horiz-adv-x="748" d="M34 936v146h172v261h197v-261h205v-146h-205v-657q0 -76 31.5 -107t83.5 -31q17 0 37.5 4t36.5 10l26 -135q-22 -18 -64.5 -29.5t-85.5 -11.5q-120 0 -191 72.5t-71 227.5v657h-172zM545 1210l61 246v131h158v-140l-122 -237h-97z" />
+<glyph unicode="&#x166;" horiz-adv-x="1200" d="M34 1301v155h1132v-155h-468v-326h220v-155h-220v-820h-197v820h-224v155h224v326h-467z" />
+<glyph unicode="&#x167;" horiz-adv-x="708" d="M-8 600v155h214v181h-172v146h172v261h197v-261h205v-146h-205v-181h230v-155h-230v-321q0 -76 31.5 -107t83.5 -31q17 0 37.5 4t36.5 10l26 -135q-22 -18 -64.5 -29.5t-85.5 -11.5q-120 0 -191 72.5t-71 227.5v321h-214z" />
+<glyph unicode="&#x168;" horiz-adv-x="1386" d="M147 469v987h197v-987q0 -165 94 -250.5t248 -85.5q162 0 261.5 85.5t99.5 250.5v987h197v-987q0 -238 -154.5 -364t-403.5 -126q-240 0 -389.5 126.5t-149.5 363.5zM350 1628q0 93 59 161.5t150 68.5q56 0 140 -47t136 -47q41 0 71 32.5t30 79.5l108 -32 q0 -94 -59.5 -159t-149.5 -65q-71 0 -148 46.5t-128 46.5q-43 0 -72 -32.5t-29 -78.5z" />
+<glyph unicode="&#x169;" d="M139 444v638h197v-640q0 -173 51 -238t159 -65q105 0 173.5 42.5t103.5 120.5v780h197v-1082h-177l-13 160q-51 -87 -131 -134t-185 -47q-177 0 -276 113t-99 352zM233 1285q0 93 59 161.5t150 68.5q56 0 140 -47t136 -47q41 0 71 32.5t30 79.5l108 -32q0 -94 -59.5 -159 t-149.5 -65q-71 0 -148 46.5t-128 46.5q-43 0 -72 -32.5t-29 -78.5z" />
+<glyph unicode="&#x16a;" horiz-adv-x="1386" d="M147 469v987h197v-987q0 -165 94 -250.5t248 -85.5q162 0 261.5 85.5t99.5 250.5v987h197v-987q0 -238 -154.5 -364t-403.5 -126q-240 0 -389.5 126.5t-149.5 363.5zM342 1640v146h721v-146h-721z" />
+<glyph unicode="&#x16b;" d="M139 444v638h197v-640q0 -173 51 -238t159 -65q105 0 173.5 42.5t103.5 120.5v780h197v-1082h-177l-13 160q-51 -87 -131 -134t-185 -47q-177 0 -276 113t-99 352zM225 1299v146h721v-146h-721z" />
+<glyph unicode="&#x16c;" horiz-adv-x="1386" d="M147 469v987h197v-987q0 -165 94 -250.5t248 -85.5q162 0 261.5 85.5t99.5 250.5v987h197v-987q0 -238 -154.5 -364t-403.5 -126q-240 0 -389.5 126.5t-149.5 363.5zM403 1864l2 6h151q0 -66 34 -107t108 -41q72 0 107 41.5t35 106.5h151l2 -6q4 -116 -77 -189t-218 -73 q-138 0 -219 73t-76 189z" />
+<glyph unicode="&#x16d;" d="M139 444v638h197v-640q0 -173 51 -238t159 -65q105 0 173.5 42.5t103.5 120.5v780h197v-1082h-177l-13 160q-51 -87 -131 -134t-185 -47q-177 0 -276 113t-99 352zM286 1521l2 6h151q0 -66 34 -107t108 -41q72 0 107 41.5t35 106.5h151l2 -6q4 -116 -77 -189t-218 -73 q-138 0 -219 73t-76 189z" />
+<glyph unicode="&#x16e;" horiz-adv-x="1386" d="M147 469v987h197v-987q0 -165 94 -250.5t248 -85.5q162 0 261.5 85.5t99.5 250.5v987h197v-987q0 -238 -154.5 -364t-403.5 -126q-240 0 -389.5 126.5t-149.5 363.5zM488 1734q0 84 60.5 141t147.5 57q85 0 145 -56.5t60 -141.5q0 -86 -59.5 -140t-145.5 -54 q-87 0 -147.5 54t-60.5 140zM591 1734q0 -43 31 -73.5t74 -30.5q42 0 72 29.5t30 74.5t-30 76t-72 31q-43 0 -74 -31t-31 -76z" />
+<glyph unicode="&#x16f;" d="M139 444v638h197v-640q0 -173 51 -238t159 -65q105 0 173.5 42.5t103.5 120.5v780h197v-1082h-177l-13 160q-51 -87 -131 -134t-185 -47q-177 0 -276 113t-99 352zM371 1391q0 84 60.5 141t147.5 57q85 0 145 -56.5t60 -141.5q0 -86 -59.5 -140t-145.5 -54 q-87 0 -147.5 54t-60.5 140zM474 1391q0 -43 31 -73.5t74 -30.5q42 0 72 29.5t30 74.5t-30 76t-72 31q-43 0 -74 -31t-31 -76z" />
+<glyph unicode="&#x170;" horiz-adv-x="1386" d="M147 469v987h197v-987q0 -165 94 -250.5t248 -85.5q162 0 261.5 85.5t99.5 250.5v987h197v-987q0 -238 -154.5 -364t-403.5 -126q-240 0 -389.5 126.5t-149.5 363.5zM461 1601l184 266h211l2 -5l-240 -261h-157zM730 1606l241 261h229l3 -6l-300 -260h-171z" />
+<glyph unicode="&#x171;" d="M139 444v638h197v-640q0 -173 51 -238t159 -65q105 0 173.5 42.5t103.5 120.5v780h197v-1082h-177l-13 160q-51 -87 -131 -134t-185 -47q-177 0 -276 113t-99 352zM344 1258l184 266h211l2 -5l-240 -261h-157zM613 1263l241 261h229l3 -6l-300 -260h-171z" />
+<glyph unicode="&#x172;" horiz-adv-x="1386" d="M147 469v987h197v-987q0 -165 94 -250.5t248 -85.5q162 0 261.5 85.5t99.5 250.5v987h197v-987q0 -238 -154.5 -364t-403.5 -126q-240 0 -389.5 126.5t-149.5 363.5zM493 -223q0 80 60.5 152t187.5 128l72 -57q-70 -52 -109.5 -99.5t-39.5 -101.5q0 -42 22.5 -66 t73.5 -24q27 0 50 7.5t49 18.5l33 -123q-36 -19 -79.5 -31.5t-103.5 -12.5q-95 0 -155.5 55t-60.5 154z" />
+<glyph unicode="&#x173;" d="M139 444v638h197v-640q0 -173 51 -238t159 -65q105 0 173.5 42.5t103.5 120.5v780h197v-1082h-177l-13 160q-51 -87 -131 -134t-185 -47q-177 0 -276 113t-99 352zM675 -223q0 80 60.5 152t187.5 128l72 -57q-70 -52 -109.5 -99.5t-39.5 -101.5q0 -42 22.5 -66t73.5 -24 q27 0 50 7.5t49 18.5l33 -123q-36 -19 -79.5 -31.5t-103.5 -12.5q-95 0 -155.5 55t-60.5 154z" />
+<glyph unicode="&#x174;" horiz-adv-x="1809" d="M54 1456h196l222 -952l27 -182l6 -1l39 183l267 952h174l269 -952l40 -187h6l29 187l217 952h197l-351 -1456h-176l-287 1010l-26 131h-6l-25 -131l-292 -1010h-176zM592 1601v26l246 237h120l248 -238v-25h-161l-147 148l-146 -148h-160z" />
+<glyph unicode="&#x175;" horiz-adv-x="1550" d="M45 1082h196l179 -688l23 -131h6l28 131l216 688h158l217 -688l31 -146h6l29 146l170 688h196l-314 -1082h-159l-209 659l-45 184l-6 -1l-43 -183l-206 -659h-159zM467 1258v26l246 237h120l248 -238v-25h-161l-147 148l-146 -148h-160z" />
+<glyph unicode="&#x176;" horiz-adv-x="1250" d="M20 1456h225l380 -740l380 740h225l-511 -944v-512h-196v525zM319 1600v26l246 237h120l248 -238v-25h-161l-147 148l-146 -148h-160z" />
+<glyph unicode="&#x177;" horiz-adv-x="1030" d="M26 1082h220l228 -681l35 -136h6l266 817h219l-455 -1248q-41 -109 -117.5 -190t-206.5 -81q-24 0 -61 5.5t-57 10.5l20 155q-6 1 35.5 -2t52.5 -3q63 0 103 56t67 124l47 113zM208 1258v26l246 237h120l248 -238v-25h-161l-147 148l-146 -148h-160z" />
+<glyph unicode="&#x178;" horiz-adv-x="1250" d="M20 1456h225l380 -740l380 740h225l-511 -944v-512h-196v525zM281 1604v200h219v-200h-219zM751 1604v200h219v-200h-219z" />
+<glyph unicode="&#x179;" horiz-adv-x="1225" d="M97 0v146l778 1155h-767v155h992v-141l-781 -1161h814v-154h-1036zM519 1556l185 266h230l2 -6l-270 -260h-147z" />
+<glyph unicode="&#x17a;" horiz-adv-x="1030" d="M94 0v138l585 788h-578v156h819v-134l-591 -794h625v-154h-860zM434 1213l185 266h230l2 -6l-270 -260h-147z" />
+<glyph unicode="&#x17b;" horiz-adv-x="1225" d="M97 0v146l778 1155h-767v155h992v-141l-781 -1161h814v-154h-1036zM500 1604v201h218v-201h-218z" />
+<glyph unicode="&#x17c;" horiz-adv-x="1030" d="M94 0v138l585 788h-578v156h819v-134l-591 -794h625v-154h-860zM415 1261v201h218v-201h-218z" />
+<glyph unicode="&#x17d;" horiz-adv-x="1225" d="M97 0v146l778 1155h-767v155h992v-141l-781 -1161h814v-154h-1036zM295 1845v20h166l147 -148l147 148h170v-18l-257 -245h-119z" />
+<glyph unicode="&#x17e;" horiz-adv-x="1030" d="M94 0v138l585 788h-578v156h819v-134l-591 -794h625v-154h-860zM210 1502v20h166l147 -148l147 148h170v-18l-257 -245h-119z" />
+<glyph unicode="&#x17f;" horiz-adv-x="516" d="M159 0v1219q0 173 91 267.5t253 94.5q33 0 67.5 -5.5t76.5 -15.5l-24 -145q-20 5 -42 8t-47 3q-87 0 -132.5 -54.5t-45.5 -152.5v-1219h-197z" />
+<glyph unicode="&#x192;" horiz-adv-x="702" d="M-23 -419l14 150q12 -5 45.5 -9t51.5 -4q60 0 94 51.5t34 141.5v1025h-169v146h169v137q0 173 90.5 267.5t252.5 94.5q34 0 68.5 -5.5t76.5 -15.5l-24 -150q-18 4 -43.5 7t-52.5 3q-87 0 -129 -51.5t-42 -149.5v-137h196v-146h-196v-1025q0 -167 -85.5 -257.5 t-239.5 -90.5q-32 0 -58 4.5t-53 13.5z" />
+<glyph unicode="&#x1a0;" horiz-adv-x="1403" d="M108 598v259q0 266 159.5 443t414.5 177q120 0 223 -40t182 -113q123 11 187 96.5t64 232.5h197q0 -192 -88 -313.5t-250 -157.5q38 -71 59 -154t21 -171v-259q0 -267 -165.5 -443t-429.5 -176q-255 0 -414.5 176t-159.5 443zM305 598q0 -202 102.5 -330t274.5 -128 q183 0 290.5 127.5t107.5 330.5v261q0 200 -108 328t-290 128q-172 0 -274.5 -128t-102.5 -328v-261z" />
+<glyph unicode="&#x1a1;" horiz-adv-x="1175" d="M97 529v22q0 240 130 395.5t353 155.5q102 0 187 -35t149 -98q82 18 122 84t40 170h178q0 -143 -66.5 -237t-195.5 -126q35 -66 53.5 -144.5t18.5 -164.5v-22q0 -242 -130 -396t-354 -154t-354.5 154.5t-130.5 395.5zM294 529q0 -172 72.5 -284t215.5 -112q141 0 214 112 t73 284v22q0 170 -73.5 283t-215.5 113q-141 0 -213.5 -113t-72.5 -283v-22z" />
+<glyph unicode="&#x1af;" horiz-adv-x="1430" d="M147 469v987h197v-987q0 -165 94 -250.5t248 -85.5q162 0 261.5 85.5t99.5 250.5v987h197v-178l6 -2q86 27 132 108.5t46 206.5h190l3 -5q2 -193 -96 -314.5t-281 -155.5v-647q0 -238 -154.5 -364t-403.5 -126q-240 0 -389.5 126.5t-149.5 363.5z" />
+<glyph unicode="&#x1b0;" horiz-adv-x="1204" d="M139 444v638h197v-640q0 -173 51 -238t159 -65q105 0 173.5 42.5t103.5 120.5v780h197v-114l6 -2q100 7 142.5 71t42.5 190h169l3 -6q3 -177 -85.5 -273t-277.5 -110v-838h-177l-13 160q-51 -87 -131 -134t-185 -47q-177 0 -276 113t-99 352z" />
+<glyph unicode="&#x1f0;" horiz-adv-x="523" d="M-68 -419l14 150q14 -5 46.5 -9t50.5 -4q59 0 93.5 51.5t34.5 141.5v1171h197v-1171q0 -167 -86 -257.5t-239 -90.5q-31 0 -56.5 4.5t-54.5 13.5zM-42 1484v20h166l147 -148l147 148h170v-18l-257 -245h-119z" />
+<glyph unicode="&#x1fa;" horiz-adv-x="1326" d="M20 0l563 1456h169l554 -1456h-201l-136 375h-610l-138 -375h-201zM420 540h490l-240 663h-6zM487 1684q0 72 51 119.5t124 47.5q70 0 120 -47.5t50 -119.5t-49.5 -118t-120.5 -46q-73 0 -124 46t-51 118zM575 1684q0 -35 25.5 -59.5t61.5 -24.5q34 0 58.5 24t24.5 60 q0 37 -24.5 62.5t-58.5 25.5q-36 0 -61.5 -25.5t-25.5 -62.5zM615 1900l144 185h199l2 -6l-216 -179h-129z" />
+<glyph unicode="&#x1fb;" horiz-adv-x="1126" d="M106 304q0 155 125.5 242.5t340.5 87.5h214v107q0 95 -58 150.5t-164 55.5q-95 0 -154.5 -48.5t-59.5 -116.5h-188l-2 6q-6 118 111.5 216t303.5 98q184 0 296 -93.5t112 -269.5v-521q0 -58 6 -112t22 -106h-203q-10 49 -15.5 86.5t-6.5 75.5q-55 -78 -143.5 -130.5 t-190.5 -52.5q-169 0 -257.5 86.5t-88.5 238.5zM303 300q0 -72 45 -114t133 -42q107 0 193 55t112 126v176h-221q-119 0 -190.5 -60t-71.5 -141zM383 1362q0 72 51 119.5t124 47.5q70 0 120 -47.5t50 -119.5t-49.5 -118t-120.5 -46q-73 0 -124 46t-51 118zM471 1362 q0 -35 25.5 -59.5t61.5 -24.5q34 0 58.5 24t24.5 60q0 37 -24.5 62.5t-58.5 25.5q-36 0 -61.5 -25.5t-25.5 -62.5zM511 1578l144 185h199l2 -6l-216 -179h-129z" />
+<glyph unicode="&#x1fc;" horiz-adv-x="1922" d="M-20 0l880 1456h967v-155h-691l20 -466h590v-155h-584l22 -526h705v-154h-895l-15 350h-557l-202 -350h-240zM525 529h447l-31 710l-5 2zM845 1556l185 266h230l2 -6l-270 -260h-147z" />
+<glyph unicode="&#x1fd;" horiz-adv-x="1729" d="M58 304q0 158 115 244.5t335 86.5h229v85q0 106 -51.5 166.5t-149.5 60.5q-103 0 -164 -55t-61 -133l-188 18l-2 6q-5 138 109.5 228.5t305.5 90.5q114 0 201.5 -40.5t137.5 -117.5q64 75 151.5 116.5t188.5 41.5q214 0 329.5 -130t115.5 -358v-119h-709l-2 -5 q1 -159 79.5 -258t233.5 -99q103 0 169.5 27.5t144.5 78.5l67 -138q-53 -44 -147 -83t-234 -39q-136 0 -240 48.5t-170 138.5q-56 -79 -167.5 -133t-271.5 -54q-170 0 -262.5 87t-92.5 238zM255 300q0 -74 50 -120.5t147 -46.5q76 0 159 43.5t126 100.5v216h-227 q-120 0 -187.5 -56t-67.5 -137zM769 1235l185 266h230l2 -6l-270 -260h-147zM953 645l2 -5h508v31q0 122 -60 199t-188 77q-113 0 -182 -84.5t-80 -217.5z" />
+<glyph unicode="&#x1fe;" horiz-adv-x="1396" d="M113 598v259q0 266 159.5 443t414.5 177q94 0 178.5 -25.5t156.5 -71.5l81 137h149l-132 -221q77 -84 119.5 -197t42.5 -242v-259q0 -267 -165.5 -443t-429.5 -176q-85 0 -160.5 20.5t-139.5 60.5l-91 -154h-149l139 234q-84 84 -128.5 202t-44.5 256zM310 598 q0 -85 19 -158t54 -125l6 -1l544 916q-50 41 -112 63t-134 22q-172 0 -274.5 -128t-102.5 -328v-261zM475 208q44 -34 97 -51t115 -17q183 0 290.5 127.5t107.5 330.5v261q0 75 -16.5 142t-46.5 117l-6 1zM608 1618l185 266h230l2 -6l-270 -260h-147z" />
+<glyph unicode="&#x1ff;" d="M97 529v22q0 240 130 395.5t353 155.5q56 0 107.5 -11t97.5 -31l74 149h129l-104 -211q88 -74 135 -190t47 -257v-22q0 -242 -130 -396t-354 -154q-51 0 -97 8.5t-88 24.5l-72 -147h-129l100 204q-96 71 -147.5 191t-51.5 269zM294 529q0 -91 20 -166.5t61 -123.5h6 l332 674q-29 16 -62.5 25t-70.5 9q-141 0 -213.5 -113t-72.5 -283v-22zM449 1233l185 266h230l2 -6l-270 -260h-147zM469 156q24 -12 52 -17.5t61 -5.5q141 0 214 112t73 284v22q0 80 -17.5 150.5t-49.5 117.5h-6z" />
+<glyph unicode="&#x218;" horiz-adv-x="1277" d="M102 413l2 6h188q0 -140 103 -213t255 -73q149 0 236 63t87 171q0 100 -75 167.5t-266 113.5q-231 55 -360.5 162t-129.5 269q0 170 139.5 284t361.5 114q239 0 380.5 -131t136.5 -304l-2 -6h-188q0 128 -84.5 207t-242.5 79q-147 0 -225.5 -66.5t-78.5 -173.5 q0 -95 85 -158.5t276 -111.5q230 -57 350 -168t120 -275q0 -176 -144 -283t-376 -107q-218 0 -385.5 118t-162.5 316zM465 -495l61 246v131h158v-140l-122 -237h-97z" />
+<glyph unicode="&#x219;" horiz-adv-x="1071" d="M109 329l2 6h188q5 -105 78 -153.5t171 -48.5q105 0 164.5 42.5t59.5 111.5q0 65 -49.5 107t-187.5 73q-197 43 -296.5 116.5t-99.5 200.5q0 132 112 225t292 93q189 0 300.5 -97t106.5 -236l-2 -6h-188q0 71 -59.5 127.5t-157.5 56.5q-105 0 -156 -46t-51 -111 q0 -64 45 -101t183 -66q205 -44 305 -119.5t100 -202.5q0 -144 -116.5 -233t-304.5 -89q-207 0 -326 105t-113 245zM387 -494l61 246v131h158v-140l-122 -237h-97z" />
+<glyph unicode="&#x237;" horiz-adv-x="523" d="M-68 -419l14 150q14 -5 46.5 -9t50.5 -4q59 0 93.5 51.5t34.5 141.5v1171h197v-1171q0 -167 -86 -257.5t-239 -90.5q-31 0 -56.5 4.5t-54.5 13.5z" />
+<glyph unicode="&#x2bc;" horiz-adv-x="418" d="M80 1021l60 343v196h197v-193l-160 -346h-97z" />
+<glyph unicode="&#x2c6;" horiz-adv-x="979" d="M171 1252v26l246 237h120l248 -238v-25h-161l-147 148l-146 -148h-160z" />
+<glyph unicode="&#x2c7;" horiz-adv-x="922" d="M140 1495v20h166l147 -148l147 148h170v-18l-257 -245h-119z" />
+<glyph unicode="&#x2d8;" horiz-adv-x="876" d="M134 1450l2 6h151q0 -66 34 -107t108 -41q72 0 107 41.5t35 106.5h151l2 -6q4 -116 -77 -189t-218 -73q-138 0 -219 73t-76 189z" />
+<glyph unicode="&#x2d9;" horiz-adv-x="556" d="M160 1255v201h218v-201h-218z" />
+<glyph unicode="&#x2da;" horiz-adv-x="696" d="M133 1308q0 84 60.5 141t147.5 57q85 0 145 -56.5t60 -141.5q0 -86 -59.5 -140t-145.5 -54q-87 0 -147.5 54t-60.5 140zM236 1308q0 -43 31 -73.5t74 -30.5q42 0 72 29.5t30 74.5t-30 76t-72 31q-43 0 -74 -31t-31 -76z" />
+<glyph unicode="&#x2db;" horiz-adv-x="562" d="M68 -223q0 80 60.5 152t187.5 128l72 -57q-70 -52 -109.5 -99.5t-39.5 -101.5q0 -42 22.5 -66t73.5 -24q27 0 50 7.5t49 18.5l33 -123q-36 -19 -79.5 -31.5t-103.5 -12.5q-95 0 -155.5 55t-60.5 154z" />
+<glyph unicode="&#x2dc;" horiz-adv-x="979" d="M135 1275q0 93 59 161.5t150 68.5q56 0 140 -47t136 -47q41 0 71 32.5t30 79.5l108 -32q0 -94 -59.5 -159t-149.5 -65q-71 0 -148 46.5t-128 46.5q-43 0 -72 -32.5t-29 -78.5z" />
+<glyph unicode="&#x2dd;" horiz-adv-x="762" d="M100 1252l184 266h211l2 -5l-240 -261h-157zM369 1257l241 261h229l3 -6l-300 -260h-171z" />
+<glyph unicode="&#x2f3;" horiz-adv-x="672" d="M182 -234q0 65 45.5 107.5t111.5 42.5q63 0 108 -42.5t45 -107.5q0 -63 -44.5 -104t-108.5 -41q-66 0 -111.5 41t-45.5 104zM271 -234q0 -26 20 -45t48 -19q26 0 45 18.5t19 45.5q0 30 -19 49.5t-45 19.5q-28 0 -48 -20t-20 -49z" />
+<glyph unicode="&#x300;" horiz-adv-x="0" d="M-815 1558h186l121 -348h-131z" />
+<glyph unicode="&#x301;" horiz-adv-x="0" d="M-657 1210l127 349h182l-188 -349h-121z" />
+<glyph unicode="&#x303;" horiz-adv-x="0" d="M-883 1275q0 93 59 161.5t150 68.5q56 0 140 -47t136 -47q41 0 71 32.5t30 79.5l108 -32q0 -94 -59.5 -159t-149.5 -65q-71 0 -148 46.5t-128 46.5q-43 0 -72 -32.5t-29 -78.5z" />
+<glyph unicode="&#x309;" horiz-adv-x="0" d="M-677 1546l7 108q147 0 226 -51.5t79 -137.5q0 -70 -43 -106.5t-108 -45.5l-1 -71h-140l-1 154q76 4 108.5 20t32.5 53q0 39 -43.5 58t-116.5 19z" />
+<glyph unicode="&#x30f;" horiz-adv-x="0" d="M-980 1512l3 6h229l241 -261l-2 -5h-171zM-636 1513l2 5h212l184 -266h-157z" />
+<glyph unicode="&#x323;" horiz-adv-x="0" d="M-708 -137h218v-200h-218v200z" />
+<glyph unicode="&#x384;" horiz-adv-x="526" d="M195 1270l61 380h208l-175 -380h-94z" />
+<glyph unicode="&#x385;" horiz-adv-x="1045" d="M161 1256v200h198v-200h-198zM446 1468l51 262h218l-127 -262h-142zM670 1256v200h199v-200h-199z" />
+<glyph unicode="&#x386;" horiz-adv-x="1326" d="M20 0l563 1456h169l554 -1456h-201l-136 375h-610l-138 -375h-201zM241 1270l61 380h208l-175 -380h-94zM420 540h490l-240 663h-6z" />
+<glyph unicode="&#x387;" horiz-adv-x="541" d="M161 624v212h198v-212h-198z" />
+<glyph unicode="&#x388;" horiz-adv-x="1297" d="M-29 1272l61 380h208l-175 -380h-94zM280 0v1456h955v-155h-758v-471h667v-155h-667v-521h769v-154h-966z" />
+<glyph unicode="&#x389;" horiz-adv-x="1561" d="M20 1272l61 380h208l-175 -380h-94zM280 0v1456h197v-658h707v658h197v-1456h-197v643h-707v-643h-197z" />
+<glyph unicode="&#x38a;" horiz-adv-x="679" d="M24 1271l61 380h208l-175 -380h-94zM290 0v1456h198v-1456h-198z" />
+<glyph unicode="&#x38c;" horiz-adv-x="1416" d="M68 1270l61 380h208l-175 -380h-94zM133 598v259q0 266 159.5 443t414.5 177q264 0 429.5 -176.5t165.5 -443.5v-259q0 -267 -165.5 -443t-429.5 -176q-255 0 -414.5 176t-159.5 443zM330 598q0 -202 102.5 -330t274.5 -128q183 0 290.5 127.5t107.5 330.5v261 q0 200 -108 328t-290 128q-172 0 -274.5 -128t-102.5 -328v-261z" />
+<glyph unicode="&#x38e;" horiz-adv-x="1350" d="M-127 1270l61 380h208l-175 -380h-94zM120 1456h225l380 -740l380 740h225l-511 -944v-512h-196v525z" />
+<glyph unicode="&#x38f;" horiz-adv-x="1386" d="M61 1270l61 380h208l-175 -380h-94zM132 722v116q0 284 154.5 461.5t403.5 177.5t404.5 -177.5t155.5 -461.5v-116q0 -164 -64 -317.5t-174 -250.5h240v-154h-497v159q141 25 219.5 168.5t78.5 394.5v118q0 233 -96.5 357.5t-266.5 124.5q-169 0 -265 -124.5t-96 -357.5 v-118q0 -251 80.5 -395t223.5 -168v-159h-495v154h234q-112 97 -176 250.5t-64 317.5z" />
+<glyph unicode="&#x390;" horiz-adv-x="672" d="M-51 1184v200h198v-200h-198zM197 279v802h197v-813q0 -73 26.5 -101t71.5 -28q25 0 49 7.5t42 18.5l44 -133q-45 -31 -89.5 -42t-97.5 -11q-119 0 -181 71t-62 229zM234 1396l51 262h218l-127 -262h-142zM458 1184v200h199v-200h-199z" />
+<glyph unicode="&#x391;" horiz-adv-x="1326" d="M20 0l563 1456h169l554 -1456h-201l-136 375h-610l-138 -375h-201zM420 540h490l-240 663h-6z" />
+<glyph unicode="&#x392;" horiz-adv-x="1309" d="M180 0v1456h475q228 0 357 -98.5t129 -295.5q0 -97 -62 -173.5t-163 -113.5q132 -28 207.5 -129t75.5 -235q0 -200 -129.5 -305.5t-351.5 -105.5h-538zM377 154h341q134 0 209 66.5t75 188.5q0 128 -62.5 201t-192.5 73h-370v-529zM377 837h319q110 0 179 60.5t69 168.5 q0 118 -74.5 176.5t-214.5 58.5h-278v-464z" />
+<glyph unicode="&#x393;" horiz-adv-x="1140" d="M180 0v1456h893v-155h-696v-1301h-197z" />
+<glyph unicode="&#x394;" horiz-adv-x="1447" d="M30 0l617 1456h169l576 -1456h-1362zM294 154h838l-400 1050h-6z" />
+<glyph unicode="&#x395;" horiz-adv-x="1197" d="M180 0v1456h955v-155h-758v-471h667v-155h-667v-521h769v-154h-966z" />
+<glyph unicode="&#x396;" horiz-adv-x="1225" d="M97 0v146l778 1155h-767v155h992v-141l-781 -1161h814v-154h-1036z" />
+<glyph unicode="&#x397;" horiz-adv-x="1461" d="M180 0v1456h197v-658h707v658h197v-1456h-197v643h-707v-643h-197z" />
+<glyph unicode="&#x398;" horiz-adv-x="1396" d="M113 598v259q0 266 159.5 443t414.5 177q264 0 429.5 -176.5t165.5 -443.5v-259q0 -267 -165.5 -443t-429.5 -176q-255 0 -414.5 176t-159.5 443zM310 598q0 -202 102.5 -330t274.5 -128q183 0 290.5 127.5t107.5 330.5v261q0 200 -108 328t-290 128q-172 0 -274.5 -128 t-102.5 -328v-261zM450 659v154h509v-154h-509z" />
+<glyph unicode="&#x399;" horiz-adv-x="579" d="M190 0v1456h198v-1456h-198z" />
+<glyph unicode="&#x39a;" horiz-adv-x="1317" d="M180 0v1456h197v-644h152l521 644h218l3 -5l-565 -699l606 -747l-3 -5h-235l-527 657h-170v-657h-197z" />
+<glyph unicode="&#x39b;" horiz-adv-x="1345" d="M49 0l534 1456h170l534 -1456h-201l-415 1171h-6l-415 -1171h-201z" />
+<glyph unicode="&#x39c;" horiz-adv-x="1799" d="M180 0v1456h252l464 -1183h6l464 1183h252v-1456h-197v576l20 592l-5 1l-472 -1169h-131l-470 1166l-5 -1l19 -589v-576h-197z" />
+<glyph unicode="&#x39d;" horiz-adv-x="1461" d="M180 0v1456h197l701 -1124l6 2v1122h197v-1456h-197l-701 1126l-6 -2v-1124h-197z" />
+<glyph unicode="&#x39e;" horiz-adv-x="1173" d="M123 0v154h937v-154h-937zM124 1301v155h924v-155h-924zM206 678v155h761v-155h-761z" />
+<glyph unicode="&#x39f;" horiz-adv-x="1396" d="M113 598v259q0 266 159.5 443t414.5 177q264 0 429.5 -176.5t165.5 -443.5v-259q0 -267 -165.5 -443t-429.5 -176q-255 0 -414.5 176t-159.5 443zM310 598q0 -202 102.5 -330t274.5 -128q183 0 290.5 127.5t107.5 330.5v261q0 200 -108 328t-290 128q-172 0 -274.5 -128 t-102.5 -328v-261z" />
+<glyph unicode="&#x3a0;" horiz-adv-x="1463" d="M180 0v1456h1103v-1456h-198v1301h-708v-1301h-197z" />
+<glyph unicode="&#x3a1;" horiz-adv-x="1312" d="M180 0v1456h557q233 0 362 -120t129 -316q0 -199 -129 -317.5t-362 -118.5h-360v-584h-197zM377 738h360q148 0 221 79.5t73 200.5t-73.5 202t-220.5 81h-360v-563z" />
+<glyph unicode="&#x3a3;" horiz-adv-x="1173" d="M70 0v147l480 581l-480 581v147h976v-155h-730l-3 -5l445 -557v-24l-445 -555l3 -5h780v-155h-1026z" />
+<glyph unicode="&#x3a4;" horiz-adv-x="1200" d="M34 1301v155h1132v-155h-468v-1301h-197v1301h-467z" />
+<glyph unicode="&#x3a5;" horiz-adv-x="1250" d="M20 1456h225l380 -740l380 740h225l-511 -944v-512h-196v525z" />
+<glyph unicode="&#x3a6;" horiz-adv-x="1439" d="M84 721q0 219 153.5 362t385.5 147v226h197v-227q230 -5 383.5 -146.5t153.5 -359.5q0 -221 -153.5 -363.5t-383.5 -146.5v-213h-197v213q-232 3 -385.5 145t-153.5 363zM279 721q0 -161 88.5 -254.5t249.5 -92.5l6 2v691l-6 2q-160 1 -249 -93.5t-89 -254.5zM820 376 l6 -2q157 -1 246 93.5t89 255.5q0 159 -89 252.5t-246 93.5l-6 -2v-691z" />
+<glyph unicode="&#x3a7;" horiz-adv-x="1295" d="M66 0l472 734l-462 722h236l338 -568l340 568h238l-462 -722l472 -734h-235l-349 578l-350 -578h-238z" />
+<glyph unicode="&#x3a8;" horiz-adv-x="1416" d="M87 885v571h196v-571q0 -170 82 -275t218 -125l6 1v970h198v-971l6 -2q144 19 230.5 124.5t86.5 277.5v571h197v-571q0 -245 -143 -393.5t-377 -172.5v-319h-198v320q-227 24 -364.5 172t-137.5 393z" />
+<glyph unicode="&#x3a9;" horiz-adv-x="1366" d="M112 722v116q0 284 154.5 461.5t403.5 177.5t404.5 -177.5t155.5 -461.5v-116q0 -164 -64 -317.5t-174 -250.5h240v-154h-497v159q141 25 219.5 168.5t78.5 394.5v118q0 233 -96.5 357.5t-266.5 124.5q-169 0 -265 -124.5t-96 -357.5v-118q0 -251 80.5 -395t223.5 -168 v-159h-495v154h234q-112 97 -176 250.5t-64 317.5z" />
+<glyph unicode="&#x3aa;" horiz-adv-x="579" d="M-53 1605v200h219v-200h-219zM190 0v1456h198v-1456h-198zM417 1605v200h219v-200h-219z" />
+<glyph unicode="&#x3ab;" horiz-adv-x="1250" d="M20 1456h225l380 -740l380 740h225l-511 -944v-512h-196v525zM281 1604v200h219v-200h-219zM751 1604v200h219v-200h-219z" />
+<glyph unicode="&#x3ac;" horiz-adv-x="1158" d="M98 500v21q0 261 111.5 421t312.5 160q101 0 178.5 -36t132.5 -104l51 119h117v-805q0 -72 20.5 -100t55.5 -28q15 0 28 1.5t24 5.5l23 -142q-29 -20 -59 -27t-67 -7q-75 0 -125 32t-74 101q-55 -66 -131.5 -99.5t-175.5 -33.5q-198 0 -310 143.5t-112 377.5zM295 500 q0 -164 67.5 -265.5t207.5 -101.5q81 0 138 35.5t96 99.5v8v541q-39 60 -96.5 95t-135.5 35q-141 0 -209 -119.5t-68 -306.5v-21zM568 1277l61 380h208l-175 -380h-94z" />
+<glyph unicode="&#x3ad;" horiz-adv-x="1103" d="M98 305q0 91 51.5 155t150.5 96q-87 35 -135 96t-48 134q0 150 116.5 232t317.5 82q183 0 307.5 -87.5t119.5 -226.5l-2 -6h-186q0 70 -69.5 119t-169.5 49q-116 0 -176.5 -47.5t-60.5 -114.5q0 -74 54.5 -116.5t169.5 -42.5h209v-150h-209q-121 0 -181.5 -42.5 t-60.5 -129.5q0 -73 68.5 -123t186.5 -50q112 0 184.5 56t72.5 132h186l2 -6q5 -162 -128 -247.5t-317 -85.5q-202 0 -327.5 86.5t-125.5 237.5zM494 1276l61 380h208l-175 -380h-94z" />
+<glyph unicode="&#x3ae;" d="M143 0v1082h176l13 -150q54 81 134 125.5t181 44.5q177 0 271.5 -97.5t94.5 -321.5v-1098h-197v1094q0 143 -57 205.5t-173 62.5q-85 0 -146.5 -33.5t-99.5 -93.5v-820h-197zM521 1277l61 380h208l-175 -380h-94z" />
+<glyph unicode="&#x3af;" horiz-adv-x="672" d="M197 279v802h197v-813q0 -73 26.5 -101t71.5 -28q25 0 49 7.5t42 18.5l44 -133q-45 -31 -89.5 -42t-97.5 -11q-119 0 -181 71t-62 229zM245 1258l61 380h208l-175 -380h-94z" />
+<glyph unicode="&#x3b0;" d="M141 472v610h197v-612q0 -175 69 -256t186 -81q137 0 204.5 126.5t67.5 302.5q-3 126 -36 255t-88 265h206q51 -107 83 -236.5t32 -283.5q0 -255 -111 -419t-348 -164q-221 0 -341.5 121t-120.5 372zM245 1184v200h198v-200h-198zM530 1396l51 262h218l-127 -262h-142z M754 1184v200h199v-200h-199z" />
+<glyph unicode="&#x3b1;" horiz-adv-x="1158" d="M98 500v21q0 261 111.5 421t312.5 160q101 0 178.5 -36t132.5 -104l51 119h117v-805q0 -72 20.5 -100t55.5 -28q15 0 28 1.5t24 5.5l23 -142q-29 -20 -59 -27t-67 -7q-75 0 -125 32t-74 101q-55 -66 -131.5 -99.5t-175.5 -33.5q-198 0 -310 143.5t-112 377.5zM295 500 q0 -164 67.5 -265.5t207.5 -101.5q81 0 138 35.5t96 99.5v8v541q-39 60 -96.5 95t-135.5 35q-141 0 -209 -119.5t-68 -306.5v-21z" />
+<glyph unicode="&#x3b2;" horiz-adv-x="1213" d="M157 -383v1456q0 165 133 284.5t317 119.5q195 0 313 -110t118 -284q0 -91 -50 -167.5t-137 -121.5q119 -44 185.5 -142t66.5 -227q0 -209 -126.5 -327.5t-328.5 -118.5q-82 0 -158.5 22.5t-135.5 68.5v-453h-197zM354 243q44 -52 114.5 -81t159.5 -29q129 0 203.5 80 t74.5 208q0 112 -65.5 198t-176.5 86h-143v155h82q122 0 180 60.5t58 166.5q0 95 -62.5 165t-171.5 70q-107 0 -180 -71.5t-73 -177.5v-830z" />
+<glyph unicode="&#x3b3;" horiz-adv-x="1031" d="M46 1082h202l256 -763l17 -76h6l19 76l249 763h201l-375 -1020v-479h-197v484z" />
+<glyph unicode="&#x3b4;" d="M97 529v22q0 215 105.5 364.5t290.5 179.5l7 1l2 6l-297 236v118h733v-151h-454l-2 -6l371 -277q101 -75 157 -198t56 -273v-22q0 -242 -130 -396t-354 -154t-354.5 154.5t-130.5 395.5zM294 529q0 -172 72.5 -284t215.5 -112q141 0 214 112t73 284v22q0 170 -73.5 283 t-215.5 113q-141 0 -213.5 -113t-72.5 -283v-22z" />
+<glyph unicode="&#x3b5;" horiz-adv-x="1103" d="M98 305q0 91 51.5 155t150.5 96q-87 35 -135 96t-48 134q0 150 116.5 232t317.5 82q183 0 307.5 -87.5t119.5 -226.5l-2 -6h-186q0 70 -69.5 119t-169.5 49q-116 0 -176.5 -47.5t-60.5 -114.5q0 -74 54.5 -116.5t169.5 -42.5h209v-150h-209q-121 0 -181.5 -42.5 t-60.5 -129.5q0 -73 68.5 -123t186.5 -50q112 0 184.5 56t72.5 132h186l2 -6q5 -162 -128 -247.5t-317 -85.5q-202 0 -327.5 86.5t-125.5 237.5z" />
+<glyph unicode="&#x3b6;" horiz-adv-x="1071" d="M115 1301v155h855v-112l-342 -432q-129 -153 -185.5 -266.5t-56.5 -258.5q0 -116 52.5 -174.5t154.5 -58.5h32q159 0 249 -63.5t90 -191.5q-2 -111 -79.5 -193.5t-186.5 -129.5l-81 127q66 31 113 74t47 113q0 52 -41 81t-131 29h-52q-179 0 -271.5 107t-92.5 275 q0 120 69.5 280.5t213.5 329.5l268 304l-2 5h-623z" />
+<glyph unicode="&#x3b7;" d="M143 0v1082h176l13 -150q54 81 134 125.5t181 44.5q177 0 271.5 -97.5t94.5 -321.5v-1098h-197v1094q0 143 -57 205.5t-173 62.5q-85 0 -146.5 -33.5t-99.5 -93.5v-820h-197z" />
+<glyph unicode="&#x3b8;" horiz-adv-x="1165" d="M119 555v345q0 278 124.5 427.5t338.5 149.5q215 0 339.5 -149.5t124.5 -427.5v-345q0 -279 -123.5 -427.5t-338.5 -148.5t-340 149t-125 427zM316 515q0 -189 69 -285.5t199 -96.5t197.5 96t67.5 286v133h-533v-133zM316 803h533v139q0 189 -68.5 284.5t-198.5 95.5 t-198 -95.5t-68 -284.5v-139z" />
+<glyph unicode="&#x3b9;" horiz-adv-x="672" d="M197 279v802h197v-813q0 -73 26.5 -101t71.5 -28q25 0 49 7.5t42 18.5l44 -133q-45 -31 -89.5 -42t-97.5 -11q-119 0 -181 71t-62 229z" />
+<glyph unicode="&#x3ba;" horiz-adv-x="1144" d="M153 0v1082h197v-457h84l388 457h231l2 -5l-450 -514l483 -558l-2 -5h-241l-394 459h-101v-459h-197z" />
+<glyph unicode="&#x3bb;" d="M56 0l391 1028l-55 145q-32 84 -75.5 137t-103.5 53q-10 0 -37 -2.5t-31 -2.5v145q20 5 51.5 10t55.5 5q129 0 205.5 -81t116.5 -189l360 -946q22 -71 57.5 -113t79.5 -42q14 0 18.5 0.5t28.5 4.5l-3 -154q-11 -5 -29.5 -10t-29.5 -5q-118 0 -189.5 65t-124.5 205 l-202 531l-6 -1l-29 -113l-230 -670h-219z" />
+<glyph unicode="&#x3bc;" d="M153 -416v1498h196v-642q2 -178 57.5 -242.5t155.5 -64.5q98 0 158.5 36t92.5 106v807h197v-1082h-177l-9 108q-44 -63 -107.5 -96t-146.5 -33q-72 0 -126.5 16.5t-94.5 51.5v-463h-196z" />
+<glyph unicode="&#x3bd;" horiz-adv-x="1030" d="M46 1082h202l256 -763l17 -76h6l19 76l249 763h201l-398 -1082h-149z" />
+<glyph unicode="&#x3be;" horiz-adv-x="1043" d="M86 1301v155h836v-155h-296q-123 -8 -185.5 -73t-62.5 -161q0 -94 72.5 -146.5t226.5 -52.5h143v-155h-143q-187 0 -284.5 -78t-97.5 -231q0 -120 80 -195t221 -75h60q161 0 250 -63.5t89 -192.5q-2 -111 -79.5 -193t-186.5 -129l-79 127q65 31 112 73.5t47 112.5 q0 52 -35 82t-110 30h-68q-222 0 -360 113.5t-138 313.5q0 145 79.5 243.5t231.5 142.5q-108 40 -168 110.5t-60 158.5q0 77 30.5 137.5t89.5 100.5h-215z" />
+<glyph unicode="&#x3bf;" d="M97 529v22q0 240 130 395.5t353 155.5q225 0 355.5 -155t130.5 -396v-22q0 -242 -130 -396t-354 -154t-354.5 154.5t-130.5 395.5zM294 529q0 -172 72.5 -284t215.5 -112q141 0 214 112t73 284v22q0 170 -73.5 283t-215.5 113q-141 0 -213.5 -113t-72.5 -283v-22z" />
+<glyph unicode="&#x3c0;" horiz-adv-x="1221" d="M79 926v156h1039v-156h-123v-658q0 -73 26.5 -101t71.5 -28q25 0 49 7.5t42 18.5l44 -133q-45 -31 -89.5 -42t-97.5 -11q-119 0 -181 71t-62 229v647h-395v-926h-197v926h-127z" />
+<glyph unicode="&#x3c1;" d="M143 -416v992v1q0 247 128.5 386t320.5 139q227 0 347.5 -158.5t120.5 -422.5v-21q0 -235 -109.5 -378t-306.5 -143q-97 0 -173 30t-131 88v-513h-197zM340 275q37 -67 97 -104.5t147 -37.5q139 0 209 102t70 265v21q0 189 -66 307.5t-205 118.5q-123 0 -187.5 -115.5 t-64.5 -255.5v-301z" />
+<glyph unicode="&#x3c2;" horiz-adv-x="1102" d="M98 520v42q0 227 127.5 383.5t347.5 156.5q187 0 303.5 -104.5t112.5 -282.5l-2 -6h-178q0 103 -61 170.5t-175 67.5q-138 0 -208 -115t-70 -270v-42q0 -143 82 -243.5t248 -124.5q180 -26 264 -79t84 -176q-2 -111 -79.5 -193t-186.5 -129l-81 127q66 31 113 73.5 t47 112.5q0 48 -44 73.5t-139 38.5q-251 35 -378 170t-127 350z" />
+<glyph unicode="&#x3c3;" d="M97 529v22q0 231 129.5 380.5t352.5 150.5h569v-156h-277q94 -72 144.5 -178t50.5 -236v-22q0 -210 -132 -360.5t-352 -150.5q-224 0 -354.5 154.5t-130.5 395.5zM294 529q0 -172 72.5 -284t215.5 -112q141 0 214 112t73 284v22q0 161 -73.5 268t-215.5 107 q-141 0 -213.5 -107t-72.5 -268v-22z" />
+<glyph unicode="&#x3c4;" horiz-adv-x="1072" d="M81 929v153h907v-153h-358v-929h-197v929h-352z" />
+<glyph unicode="&#x3c5;" d="M141 472v610h197v-612q0 -175 69 -256t186 -81q137 0 204.5 126.5t67.5 302.5q-3 126 -36 255t-88 265h206q51 -107 83 -236.5t32 -283.5q0 -255 -111 -419t-348 -164q-221 0 -341.5 121t-120.5 372z" />
+<glyph unicode="&#x3c6;" horiz-adv-x="1450" d="M83 564q0 153 32 281.5t84 236.5h206q-57 -134 -90 -263t-35 -255q0 -155 81.5 -274t249.5 -142l6 2v932h197q228 0 390.5 -160.5t162.5 -397.5q0 -218 -135.5 -367.5t-417.5 -172.5v-462h-197v462q-274 25 -404 185.5t-130 394.5zM814 147l6 -2q177 21 263.5 129.5 t86.5 249.5q-4 163 -97 281.5t-253 114.5l-6 -2v-771z" />
+<glyph unicode="&#x3c7;" horiz-adv-x="1143" d="M94 1082q21 5 52.5 10t55.5 5q129 0 204.5 -80t117.5 -188l92 -222h6l233 475h198l-341 -707l204 -492q32 -73 63 -110.5t74 -37.5q14 0 19 1t27 4l-3 -162q-10 -6 -28.5 -10.5t-31.5 -4.5q-116 0 -185.5 65.5t-121.5 206.5l-127 300h-6l-265 -550h-209l383 782l-163 386 q-33 82 -76 132.5t-103 50.5q-10 0 -37 -2.5t-31 -2.5z" />
+<glyph unicode="&#x3c8;" horiz-adv-x="1440" d="M91 596v486h197v-488q0 -207 84.5 -316.5t228.5 -128.5l6 2v930h198v-932l6 -2q177 23 263 143.5t86 276.5q-3 125 -36 253.5t-89 261.5h207q51 -106 83 -234t32 -281q0 -240 -133 -401t-419 -183v-457h-198v459q-247 25 -381.5 176t-134.5 435z" />
+<glyph unicode="&#x3c9;" horiz-adv-x="1741" d="M108 562q0 155 42.5 285t112.5 235h206q-74 -134 -117 -263.5t-47 -256.5q0 -190 56 -309.5t176 -119.5q107 0 170.5 81t63.5 256v300h198v-300q0 -175 63 -256t171 -81q120 0 176 118.5t56 310.5q-5 127 -48 256.5t-116 263.5h207q68 -106 111 -236t43 -284 q0 -255 -101 -419t-317 -164q-127 0 -214.5 61t-129.5 180q-43 -119 -130.5 -180t-212.5 -61q-217 0 -318 164t-101 419z" />
+<glyph unicode="&#x3ca;" horiz-adv-x="672" d="M-40 1262v200h219v-200h-219zM197 279v802h197v-813q0 -73 26.5 -101t71.5 -28q25 0 49 7.5t42 18.5l44 -133q-45 -31 -89.5 -42t-97.5 -11q-119 0 -181 71t-62 229zM430 1262v200h219v-200h-219z" />
+<glyph unicode="&#x3cb;" d="M141 472v610h197v-612q0 -175 69 -256t186 -81q137 0 204.5 126.5t67.5 302.5q-3 126 -36 255t-88 265h206q51 -107 83 -236.5t32 -283.5q0 -255 -111 -419t-348 -164q-221 0 -341.5 121t-120.5 372zM256 1262v200h219v-200h-219zM726 1262v200h219v-200h-219z" />
+<glyph unicode="&#x3cc;" d="M97 529v22q0 240 130 395.5t353 155.5q225 0 355.5 -155t130.5 -396v-22q0 -242 -130 -396t-354 -154t-354.5 154.5t-130.5 395.5zM294 529q0 -172 72.5 -284t215.5 -112q141 0 214 112t73 284v22q0 170 -73.5 283t-215.5 113q-141 0 -213.5 -113t-72.5 -283v-22z M525 1277l61 380h208l-175 -380h-94z" />
+<glyph unicode="&#x3cd;" d="M141 472v610h197v-612q0 -175 69 -256t186 -81q137 0 204.5 126.5t67.5 302.5q-3 126 -36 255t-88 265h206q51 -107 83 -236.5t32 -283.5q0 -255 -111 -419t-348 -164q-221 0 -341.5 121t-120.5 372zM543 1258l61 380h208l-175 -380h-94z" />
+<glyph unicode="&#x3ce;" horiz-adv-x="1741" d="M108 562q0 155 42.5 285t112.5 235h206q-74 -134 -117 -263.5t-47 -256.5q0 -190 56 -309.5t176 -119.5q107 0 170.5 81t63.5 256v300h198v-300q0 -175 63 -256t171 -81q120 0 176 118.5t56 310.5q-5 127 -48 256.5t-116 263.5h207q68 -106 111 -236t43 -284 q0 -255 -101 -419t-317 -164q-127 0 -214.5 61t-129.5 180q-43 -119 -130.5 -180t-212.5 -61q-217 0 -318 164t-101 419zM813 1258l61 380h208l-175 -380h-94z" />
+<glyph unicode="&#x3d1;" horiz-adv-x="1265" d="M113 592v660l197 2v-662q0 -200 91 -326t246 -126q165 0 260 118.5t97 326.5q-218 8 -350.5 133.5t-132.5 317.5v62q0 172 94.5 275.5t245.5 103.5q157 0 248 -101t91 -278v-506q0 -278 -152.5 -445.5t-400.5 -167.5q-238 0 -386 174t-148 439zM718 1034q0 -120 75 -199 t205 -83l6 2v344q0 108 -36.5 162.5t-106.5 54.5q-66 0 -104.5 -54.5t-38.5 -162.5v-64z" />
+<glyph unicode="&#x3d2;" horiz-adv-x="1089" d="M-22 1443q24 14 49 19t60 5q80 0 141.5 -52t113.5 -176l178 -406l19 -70h6l19 70l178 406q51 124 112.5 176t142.5 52q34 0 59 -5t51 -19l-23 -152q-5 3 -16 5.5t-24 2.5q-33 0 -60.5 -17.5t-43.5 -56.5l-300 -647v-578h-196v578l-300 647q-17 39 -44.5 56.5t-59.5 17.5 q-14 0 -24.5 -2.5t-15.5 -5.5z" />
+<glyph unicode="&#x3d6;" horiz-adv-x="1608" d="M78 926v156h1483v-156h-133q29 -81 45.5 -172t16.5 -192q0 -254 -87 -418.5t-271 -164.5q-119 0 -201.5 60.5t-122.5 176.5q-41 -117 -123 -177t-200 -60q-185 0 -271.5 164.5t-86.5 418.5q0 101 16 192t46 172h-111zM324 562q0 -190 41.5 -309.5t130.5 -119.5 q98 0 156 81t58 256v250h198v-250q0 -175 57.5 -256t156.5 -81q87 0 129 119t42 310q-3 89 -23 180t-54 184h-815q-35 -94 -55 -185t-22 -179z" />
+<glyph unicode="&#x400;" horiz-adv-x="1197" d="M180 0v1456h955v-155h-758v-471h667v-155h-667v-521h769v-154h-966zM303 1820l3 6h230l175 -266h-158z" />
+<glyph unicode="&#x401;" horiz-adv-x="1197" d="M180 0v1456h955v-155h-758v-471h667v-155h-667v-521h769v-154h-966zM284 1605v200h219v-200h-219zM754 1605v200h219v-200h-219z" />
+<glyph unicode="&#x402;" horiz-adv-x="1537" d="M41 1301v155h1132v-155h-518v-460q79 22 155 36.5t130 14.5q246 0 383 -121t137 -338q0 -216 -127 -329t-365 -110l-5 2l-2 141q162 0 232 76t70 220q-2 143 -82.5 218.5t-240.5 75.5q-62 0 -138.5 -12.5t-146.5 -33.5v-681h-197v1301h-417z" />
+<glyph unicode="&#x403;" horiz-adv-x="1140" d="M180 0v1456h893v-155h-696v-1301h-197zM536 1556l185 266h230l2 -6l-270 -260h-147z" />
+<glyph unicode="&#x404;" horiz-adv-x="1386" d="M135 599v259q0 269 155.5 444.5t402.5 175.5t393 -131.5t142 -348.5l-2 -6h-189q0 153 -90 242t-254 89q-165 0 -263 -133t-98 -330v-47h562v-154h-562v-60q0 -199 98 -332t263 -133q164 0 254 88.5t90 244.5h189l2 -6q4 -205 -144 -343t-391 -138q-247 0 -402.5 175 t-155.5 444z" />
+<glyph unicode="&#x405;" horiz-adv-x="1277" d="M102 413l2 6h188q0 -140 103 -213t255 -73q149 0 236 63t87 171q0 100 -75 167.5t-266 113.5q-231 55 -360.5 162t-129.5 269q0 170 139.5 284t361.5 114q239 0 380.5 -131t136.5 -304l-2 -6h-188q0 128 -84.5 207t-242.5 79q-147 0 -225.5 -66.5t-78.5 -173.5 q0 -95 85 -158.5t276 -111.5q230 -57 350 -168t120 -275q0 -176 -144 -283t-376 -107q-218 0 -385.5 118t-162.5 316z" />
+<glyph unicode="&#x406;" horiz-adv-x="579" d="M190 0v1456h198v-1456h-198z" />
+<glyph unicode="&#x407;" horiz-adv-x="579" d="M-53 1605v200h219v-200h-219zM190 0v1456h198v-1456h-198zM417 1605v200h219v-200h-219z" />
+<glyph unicode="&#x408;" horiz-adv-x="1130" d="M66 395l2 6h189q0 -135 68.5 -201.5t193.5 -66.5q109 0 178 73.5t69 196.5v1053h197v-1053q0 -195 -123.5 -309.5t-320.5 -114.5q-210 0 -334 106.5t-119 309.5z" />
+<glyph unicode="&#x409;" horiz-adv-x="2201" d="M50 0v154h40q150 0 216 142.5t67 473.5v686h898v-567h359q232 0 361.5 -123.5t129.5 -321.5t-129.5 -321t-361.5 -123h-556v1301h-504l-1 -531q-1 -401 -108.5 -585.5t-358.5 -184.5h-52zM1271 154h359q147 0 220.5 84.5t73.5 207.5q0 121 -73.5 205t-220.5 84h-359v-581 z" />
+<glyph unicode="&#x40a;" horiz-adv-x="2212" d="M180 0v1456h197v-629h708v629h197v-616h360q233 0 361.5 -114t128.5 -302q0 -189 -129 -306.5t-361 -117.5h-557v673h-708v-673h-197zM1282 165h360q147 0 220.5 74t73.5 187q0 112 -73.5 185.5t-220.5 73.5h-360v-520z" />
+<glyph unicode="&#x40b;" horiz-adv-x="1670" d="M66 1301v155h1132v-155h-528v-433q76 20 155 30t184 10q240 0 364.5 -106t124.5 -342v-460h-197v460q0 164 -69.5 228t-222.5 64q-90 0 -173.5 -11t-165.5 -31v-710h-197v1301h-407z" />
+<glyph unicode="&#x40c;" horiz-adv-x="1317" d="M180 0v1456h197v-644h152l521 644h218l3 -5l-565 -699l606 -747l-3 -5h-235l-527 657h-170v-657h-197zM524 1556l185 266h230l2 -6l-270 -260h-147z" />
+<glyph unicode="&#x40d;" horiz-adv-x="1461" d="M180 0v1456h197v-1109l6 -2l701 1111h197v-1456h-197v1110l-6 2l-701 -1112h-197zM408 1820l3 6h230l175 -266h-158z" />
+<glyph unicode="&#x40e;" horiz-adv-x="1297" d="M85 1456h221l282 -681l73 -188h6l328 869h229l-509 -1217q-59 -131 -128.5 -195.5t-221.5 -64.5q-25 0 -58.5 3t-42.5 6l5 149q10 -2 43.5 -3t50.5 -1q71 0 101.5 36t68.5 116l40 84zM352 1864l2 6h151q0 -66 34 -107t108 -41q72 0 107 41.5t35 106.5h151l2 -6 q4 -116 -77 -189t-218 -73q-138 0 -219 73t-76 189z" />
+<glyph unicode="&#x40f;" horiz-adv-x="1463" d="M180 0v1456h197v-1302h708v1302h197v-1456h-445v-359h-197v359h-460z" />
+<glyph unicode="&#x410;" horiz-adv-x="1326" d="M20 0l563 1456h169l554 -1456h-201l-136 375h-610l-138 -375h-201zM420 540h490l-240 663h-6z" />
+<glyph unicode="&#x411;" horiz-adv-x="1292" d="M163 0v1456h893v-155h-696v-421h359q233 0 362.5 -119.5t129.5 -316.5q0 -198 -130 -321t-362 -123h-556zM360 154h359q147 0 221 84.5t74 207.5q0 119 -73.5 199t-221.5 80h-359v-571z" />
+<glyph unicode="&#x412;" horiz-adv-x="1309" d="M180 0v1456h475q228 0 357 -98.5t129 -295.5q0 -97 -62 -173.5t-163 -113.5q132 -28 207.5 -129t75.5 -235q0 -200 -129.5 -305.5t-351.5 -105.5h-538zM377 154h341q134 0 209 66.5t75 188.5q0 128 -62.5 201t-192.5 73h-370v-529zM377 837h319q110 0 179 60.5t69 168.5 q0 118 -74.5 176.5t-214.5 58.5h-278v-464z" />
+<glyph unicode="&#x413;" horiz-adv-x="1140" d="M180 0v1456h893v-155h-696v-1301h-197z" />
+<glyph unicode="&#x414;" horiz-adv-x="1550" d="M48 154h125q77 87 141 255.5t70 457.5l33 589h876v-1302h200l-20 -511h-177v357h-1051v-359h-167zM392 154h704v1147h-490l-23 -434q-9 -238 -60 -419t-131 -294z" />
+<glyph unicode="&#x415;" horiz-adv-x="1197" d="M180 0v1456h955v-155h-758v-471h667v-155h-667v-521h769v-154h-966z" />
+<glyph unicode="&#x416;" horiz-adv-x="1869" d="M28 0l487 770l-446 686h230l378 -633h164v633h197v-633h156l378 633h230l-447 -685l487 -771h-245l-406 668h-153v-668h-197v668h-162l-405 -668h-246z" />
+<glyph unicode="&#x417;" horiz-adv-x="1385" d="M125 398l2 6h188q0 -114 99 -192.5t256 -78.5q178 0 279 74.5t101 194.5q0 133 -92 197.5t-272 64.5h-183v156h183q174 0 258 66t84 180q0 112 -90.5 184t-267.5 72q-141 0 -237.5 -71t-96.5 -176h-188l-1 6q-6 176 146.5 286t376.5 110q257 0 406 -108t149 -307 q0 -101 -68 -184.5t-188 -130.5q135 -42 206.5 -129t71.5 -212q0 -201 -159.5 -314t-417.5 -113q-226 0 -388 107t-157 312z" />
+<glyph unicode="&#x418;" horiz-adv-x="1461" d="M180 0v1456h197v-1109l6 -2l701 1111h197v-1456h-197v1110l-6 2l-701 -1112h-197z" />
+<glyph unicode="&#x419;" horiz-adv-x="1461" d="M180 0v1456h197v-1109l6 -2l701 1111h197v-1456h-197v1110l-6 2l-701 -1112h-197zM439 1864l2 6h151q0 -66 34 -107t108 -41q72 0 107 41.5t35 106.5h151l2 -6q4 -116 -77 -189t-218 -73q-138 0 -219 73t-76 189z" />
+<glyph unicode="&#x41a;" horiz-adv-x="1317" d="M180 0v1456h197v-644h152l521 644h218l3 -5l-565 -699l606 -747l-3 -5h-235l-527 657h-170v-657h-197z" />
+<glyph unicode="&#x41b;" horiz-adv-x="1451" d="M49 0v154h41q138 0 199 142.5t62 473.5l1 686h919v-1456h-197v1301h-526l-1 -531q0 -400 -103 -585t-342 -185h-53z" />
+<glyph unicode="&#x41c;" horiz-adv-x="1799" d="M180 0v1456h252l464 -1183h6l464 1183h252v-1456h-197v576l20 592l-5 1l-472 -1169h-131l-470 1166l-5 -1l19 -589v-576h-197z" />
+<glyph unicode="&#x41d;" horiz-adv-x="1461" d="M180 0v1456h197v-658h707v658h197v-1456h-197v643h-707v-643h-197z" />
+<glyph unicode="&#x41e;" horiz-adv-x="1396" d="M113 598v259q0 266 159.5 443t414.5 177q264 0 429.5 -176.5t165.5 -443.5v-259q0 -267 -165.5 -443t-429.5 -176q-255 0 -414.5 176t-159.5 443zM310 598q0 -202 102.5 -330t274.5 -128q183 0 290.5 127.5t107.5 330.5v261q0 200 -108 328t-290 128q-172 0 -274.5 -128 t-102.5 -328v-261z" />
+<glyph unicode="&#x41f;" horiz-adv-x="1463" d="M180 0v1456h1103v-1456h-198v1301h-708v-1301h-197z" />
+<glyph unicode="&#x420;" horiz-adv-x="1312" d="M180 0v1456h557q233 0 362 -120t129 -316q0 -199 -129 -317.5t-362 -118.5h-360v-584h-197zM377 738h360q148 0 221 79.5t73 200.5t-73.5 202t-220.5 81h-360v-563z" />
+<glyph unicode="&#x421;" horiz-adv-x="1297" d="M118 598v259q0 269 155.5 444.5t402.5 175.5t393 -131.5t142 -348.5l-2 -6h-189q0 153 -90 242t-254 89q-165 0 -263 -133t-98 -330v-261q0 -199 98 -332t263 -133q164 0 254 88.5t90 244.5h189l2 -6q4 -205 -144 -343t-391 -138q-247 0 -402.5 175t-155.5 444z" />
+<glyph unicode="&#x422;" horiz-adv-x="1200" d="M34 1301v155h1132v-155h-468v-1301h-197v1301h-467z" />
+<glyph unicode="&#x423;" horiz-adv-x="1287" d="M85 1456h221l282 -681l73 -188h6l328 869h229l-509 -1217q-59 -131 -128.5 -195.5t-221.5 -64.5q-25 0 -58.5 3t-42.5 6l5 149q10 -2 43.5 -3t50.5 -1q71 0 101.5 36t68.5 116l40 84z" />
+<glyph unicode="&#x424;" horiz-adv-x="1591" d="M85 723q0 257 168.5 422.5t420.5 165.5h29v205h197v-205h26q252 0 421.5 -164.5t169.5 -421.5q0 -259 -169.5 -424t-421.5 -165h-26v-196h-197v196h-29q-253 0 -421 164t-168 423zM280 723q0 -201 102.5 -317t291.5 -116h29v866h-29q-189 0 -291.5 -117t-102.5 -316z M900 290h28q186 0 289.5 117t103.5 318q0 198 -103.5 314.5t-289.5 116.5h-28v-866z" />
+<glyph unicode="&#x425;" horiz-adv-x="1295" d="M66 0l472 734l-462 722h236l338 -568l340 568h238l-462 -722l472 -734h-235l-349 578l-350 -578h-238z" />
+<glyph unicode="&#x426;" horiz-adv-x="1576" d="M181 0v1456h198v-1301h708v1301h197v-1456h-1103zM1299 160h197v-519h-197v519z" />
+<glyph unicode="&#x427;" horiz-adv-x="1409" d="M147 996v460h198v-460q0 -165 69 -228.5t222 -63.5q104 0 200 14t195 41v697h197v-1456h-197v603q-95 -29 -184 -42t-211 -13q-241 0 -365 105.5t-124 342.5z" />
+<glyph unicode="&#x428;" horiz-adv-x="1932" d="M180 0v1456h197v-1302h492v1302h196v-1302h490v1302h197v-1456h-1572z" />
+<glyph unicode="&#x429;" horiz-adv-x="1994" d="M180 0v1456h197v-1302h492v1302h196v-1302h490v1302h197v-1301h155l-20 -506h-175v351h-1532z" />
+<glyph unicode="&#x42a;" horiz-adv-x="1548" d="M22 1301v155h595v-596h359q234 0 363 -115t129 -311t-129.5 -315t-362.5 -119h-556v1301h-398zM617 154h359q148 0 221.5 80t73.5 202q0 118 -73.5 193.5t-221.5 75.5h-359v-551z" />
+<glyph unicode="&#x42b;" horiz-adv-x="1782" d="M180 0v1456h197v-576h359q233 0 362.5 -119.5t129.5 -316.5q0 -198 -130 -321t-362 -123h-556zM377 154h359q147 0 221 84.5t74 207.5q0 119 -73.5 199t-221.5 80h-359v-571zM1405 0v1456h198v-1456h-198z" />
+<glyph unicode="&#x42c;" horiz-adv-x="1290" d="M163 0v1456h197v-596h359q234 0 363 -115t129 -311t-129.5 -315t-362.5 -119h-556zM360 154h359q148 0 221.5 80t73.5 202q0 118 -73.5 193.5t-221.5 75.5h-359v-551z" />
+<glyph unicode="&#x42d;" horiz-adv-x="1385" d="M186 459l2 6h189q0 -154 89 -242.5t254 -88.5q164 0 262.5 132.5t98.5 330.5v81h-574v155h574v25q0 198 -98.5 331.5t-262.5 133.5q-165 0 -254 -89t-89 -244h-189l-2 6q-5 203 143.5 342.5t390.5 139.5q247 0 403 -175.5t156 -444.5v-259q0 -270 -156 -444.5 t-403 -174.5t-393 130.5t-141 348.5z" />
+<glyph unicode="&#x42e;" horiz-adv-x="1825" d="M190 0v1456h198v-670h205v71q0 266 159.5 443t414.5 177q264 0 429.5 -176.5t165.5 -443.5v-259q0 -267 -165.5 -443t-429.5 -176q-255 0 -414.5 176t-159.5 443v34h-205v-632h-198zM790 598q0 -202 102.5 -330t274.5 -128q183 0 290.5 127.5t107.5 330.5v261 q0 200 -108 328t-290 128q-172 0 -274.5 -128t-102.5 -328v-261z" />
+<glyph unicode="&#x42f;" horiz-adv-x="1313" d="M99 0l341 622q-141 54 -214.5 154t-73.5 242q0 208 137.5 323t378.5 115h466v-1456h-197v569h-326l-303 -569h-209zM349 1020q0 -131 82 -213t235 -82h271v576h-269q-156 0 -237.5 -75t-81.5 -206z" />
+<glyph unicode="&#x430;" horiz-adv-x="1126" d="M106 304q0 155 125.5 242.5t340.5 87.5h214v107q0 95 -58 150.5t-164 55.5q-95 0 -154.5 -48.5t-59.5 -116.5h-188l-2 6q-6 118 111.5 216t303.5 98q184 0 296 -93.5t112 -269.5v-521q0 -58 6 -112t22 -106h-203q-10 49 -15.5 86.5t-6.5 75.5q-55 -78 -143.5 -130.5 t-190.5 -52.5q-169 0 -257.5 86.5t-88.5 238.5zM303 300q0 -72 45 -114t133 -42q107 0 193 55t112 126v176h-221q-119 0 -190.5 -60t-71.5 -141z" />
+<glyph unicode="&#x431;" horiz-adv-x="1133" d="M97 508v140q0 320 134.5 510t360.5 235q126 23 182.5 55t56.5 105h152l2 -6q3 -176 -83 -231t-273 -87q-136 -23 -233 -105t-119 -241l4 -5q59 63 148 102.5t190 39.5q207 0 327 -137.5t120 -352.5v-22q0 -233 -130 -381t-354 -148t-354.5 148t-130.5 381zM295 508 q0 -163 72 -269t215 -106q141 0 214 106t73 269v22q0 144 -73.5 240t-215.5 96q-141 0 -213 -96t-72 -240v-22z" />
+<glyph unicode="&#x432;" d="M144 0v1082h427q214 0 332 -74.5t118 -223.5q0 -76 -46 -135.5t-130 -90.5q101 -25 157.5 -93.5t56.5 -156.5q0 -152 -110.5 -230t-308.5 -78h-496zM341 152h299q109 0 165 41.5t56 119.5q0 77 -56 119t-165 42h-299v-322zM341 625h231q125 0 188.5 37t63.5 112 q0 77 -64 116t-189 39h-230v-304z" />
+<glyph unicode="&#x433;" horiz-adv-x="849" d="M143 0v1082h688v-156h-491v-926h-197z" />
+<glyph unicode="&#x434;" horiz-adv-x="1247" d="M46 154h85q83 96 127 200.5t59 320.5l16 407h707v-928h144l-19 -472h-178v318h-744v-318h-178zM358 154h485v753h-320l-9 -232q-11 -180 -51.5 -307t-104.5 -214z" />
+<glyph unicode="&#x435;" horiz-adv-x="1083" d="M99 520v44q0 231 137.5 384.5t325.5 153.5q219 0 331 -132t112 -352v-123h-702l-3 -5q3 -156 79 -256.5t213 -100.5q100 0 175.5 28.5t130.5 78.5l77 -128q-58 -57 -153 -95t-230 -38q-226 0 -359.5 150.5t-133.5 390.5zM307 654l2 -5h499v26q0 116 -62 194t-184 78 q-99 0 -169 -83.5t-86 -209.5z" />
+<glyph unicode="&#x436;" horiz-adv-x="1568" d="M21 0l386 573l-352 509h238l266 -446h123v446h197v-446h123l267 446h238l-353 -509l386 -573h-248l-287 469h-126v-469h-197v469h-127l-286 -469h-248z" />
+<glyph unicode="&#x437;" horiz-adv-x="1040" d="M93 314l2 6h187q0 -76 66 -132t170 -56q107 0 166.5 49.5t59.5 123.5q0 87 -51.5 127t-161.5 40h-188v160h188q104 0 149 39.5t45 114.5q0 68 -51.5 115t-155.5 47q-93 0 -156 -49t-63 -119h-187l-2 6q-6 139 113.5 226.5t294.5 87.5q190 0 297 -81.5t107 -232.5 q0 -73 -44 -133.5t-123 -95.5q91 -33 139 -97t48 -155q0 -152 -116.5 -238t-307.5 -86q-176 0 -303 85.5t-122 247.5z" />
+<glyph unicode="&#x438;" d="M143 0v1082h196v-768l6 -2l478 770h197v-1082h-197v768l-6 2l-478 -770h-196z" />
+<glyph unicode="&#x439;" d="M143 0v1082h196v-768l6 -2l478 770h197v-1082h-197v768l-6 2l-478 -770h-196zM287 1521l2 6h151q0 -66 34 -107t108 -41q72 0 107 41.5t35 106.5h151l2 -6q4 -116 -77 -189t-218 -73q-138 0 -219 73t-76 189z" />
+<glyph unicode="&#x43a;" horiz-adv-x="1086" d="M153 0v1082h197v-457h114l357 457h231l3 -5l-424 -513l458 -559l-3 -5h-242l-365 459h-129v-459h-197z" />
+<glyph unicode="&#x43b;" horiz-adv-x="1133" d="M26 0l4 168l41 1q105 0 146.5 102.5t41.5 348.5v462h761v-1082h-197v926h-366v-306q0 -320 -85 -470t-290 -150h-56z" />
+<glyph unicode="&#x43c;" horiz-adv-x="1528" d="M153 0v1082h254l352 -824h6l354 824h246v-1082h-197v751l-6 2l-332 -753h-136l-338 770l-6 -2v-768h-197z" />
+<glyph unicode="&#x43d;" d="M143 0v1082h197v-468h482v468h197v-1082h-197v460h-482v-460h-197z" />
+<glyph unicode="&#x43e;" d="M97 529v22q0 240 130 395.5t353 155.5q225 0 355.5 -155t130.5 -396v-22q0 -242 -130 -396t-354 -154t-354.5 154.5t-130.5 395.5zM294 529q0 -172 72.5 -284t215.5 -112q141 0 214 112t73 284v22q0 170 -73.5 283t-215.5 113q-141 0 -213.5 -113t-72.5 -283v-22z" />
+<glyph unicode="&#x43f;" d="M143 0v1082h877v-1082h-197v926h-483v-926h-197z" />
+<glyph unicode="&#x440;" d="M143 -416v1498h151l31 -140q53 78 132 119t184 41q201 0 312.5 -159.5t111.5 -421.5v-21q0 -234 -112 -377.5t-309 -143.5q-100 0 -175.5 33.5t-128.5 100.5v-529h-197zM340 275q37 -67 97 -104.5t147 -37.5q140 0 212 102.5t72 264.5v21q0 184 -72.5 302.5t-213.5 118.5 q-85 0 -145 -38.5t-97 -105.5v-523z" />
+<glyph unicode="&#x441;" horiz-adv-x="1087" d="M97 520v42q0 231 125.5 385.5t360.5 154.5q190 0 310.5 -112t116.5 -275l-2 -6h-178q0 99 -70 168.5t-177 69.5q-155 0 -221.5 -111.5t-66.5 -273.5v-42q0 -166 66 -276.5t222 -110.5q98 0 172.5 60.5t74.5 148.5h177l2 -6q5 -140 -124.5 -248.5t-301.5 -108.5 q-236 0 -361 154t-125 387z" />
+<glyph unicode="&#x442;" horiz-adv-x="1048" d="M71 929v153h906v-153h-357v-929h-197v929h-352z" />
+<glyph unicode="&#x443;" horiz-adv-x="1030" d="M26 1082h220l228 -681l35 -136h6l266 817h219l-455 -1248q-41 -109 -117.5 -190t-206.5 -81q-24 0 -61 5.5t-57 10.5l20 155q-6 1 35.5 -2t52.5 -3q63 0 103 56t67 124l47 113z" />
+<glyph unicode="&#x444;" horiz-adv-x="1485" d="M98 500v21q0 263 102 422t292 159q40 0 75.5 -7t67.5 -19v484h197v-490q34 15 74 23.5t87 8.5q190 0 292 -159t102 -422v-21q0 -236 -102.5 -378.5t-289.5 -142.5q-47 0 -88 8t-75 22v-425h-197v420q-32 -12 -68 -18.5t-77 -6.5q-188 0 -290 142.5t-102 378.5zM295 500 q0 -167 57.5 -267t187.5 -100q27 0 51 3.5t44 10.5v786q-20 6 -43 10t-50 4q-130 0 -188.5 -118t-58.5 -308v-21zM832 147q20 -7 45.5 -10.5t57.5 -3.5q130 0 192.5 101t62.5 266v21q0 188 -63.5 307t-193.5 119q-30 0 -55 -4.5t-46 -12.5v-783z" />
+<glyph unicode="&#x445;" horiz-adv-x="1030" d="M46 0l361 547l-351 535h227l227 -399l230 399h230l-351 -535l361 -547h-226l-240 409l-240 -409h-228z" />
+<glyph unicode="&#x446;" horiz-adv-x="1218" d="M143 0v1082h197v-928h483v928h197v-928h132v-508h-197v354h-812z" />
+<glyph unicode="&#x447;" horiz-adv-x="1131" d="M127 765v318h197v-318q0 -130 56 -191t166 -61q66 0 126 7.5t119 22.5v539h197v-1082h-197v387q-57 -15 -117 -22.5t-128 -7.5q-196 0 -307.5 103t-111.5 305z" />
+<glyph unicode="&#x448;" horiz-adv-x="1645" d="M143 0v1082h197v-928h381v928h197v-928h381v928h197v-1082h-1353z" />
+<glyph unicode="&#x449;" horiz-adv-x="1732" d="M143 0v1082h197v-928h381v928h197v-928h381v928h197v-937h176v-483h-195v338h-1334z" />
+<glyph unicode="&#x44a;" horiz-adv-x="1268" d="M29 927v155h514v-372h269q192 0 298.5 -97.5t106.5 -253.5q0 -157 -107.5 -258t-297.5 -101h-466v927h-317zM543 154h269q106 0 156.5 56.5t50.5 141.5q0 82 -51 143t-156 61h-269v-402z" />
+<glyph unicode="&#x44b;" horiz-adv-x="1617" d="M173 0v1082h197v-412h269q192 0 298.5 -92t106.5 -239q0 -148 -107.5 -243.5t-297.5 -95.5h-466zM370 154h269q106 0 156.5 51t50.5 127q0 74 -51 129t-156 55h-269v-362zM1235 0v1082h197v-1082h-197z" />
+<glyph unicode="&#x44c;" horiz-adv-x="1113" d="M153 0v1082h197v-412h269q192 0 298.5 -92t106.5 -239q0 -148 -107.5 -243.5t-297.5 -95.5h-466zM350 154h269q106 0 156.5 51t50.5 127q0 74 -51 129t-156 55h-269v-362z" />
+<glyph unicode="&#x44d;" horiz-adv-x="1102" d="M104 365l2 6h179q0 -99 67.5 -168.5t167.5 -69.5q126 0 195 98t77 238l-3 5h-385v154h383l2 5q-10 131 -78.5 222.5t-190.5 91.5q-92 0 -163.5 -61t-71.5 -148h-178l-2 6q-6 139 121.5 248.5t293.5 109.5q220 0 347.5 -156.5t127.5 -383.5v-42q0 -228 -128 -384.5 t-347 -156.5q-183 0 -302 111.5t-114 274.5z" />
+<glyph unicode="&#x44e;" horiz-adv-x="1671" d="M153 0v1082h197v-457h256q20 212 147.5 344.5t332.5 132.5q225 0 355.5 -155t130.5 -396v-22q0 -242 -130 -396t-354 -154q-210 0 -338.5 136.5t-144.5 355.5h-255v-471h-197zM800 529q0 -172 72.5 -284t215.5 -112q141 0 214 112t73 284v22q0 170 -73.5 283t-215.5 113 q-141 0 -213.5 -113t-72.5 -283v-22z" />
+<glyph unicode="&#x44f;" horiz-adv-x="1163" d="M78 0l274 449q-103 37 -158.5 117t-55.5 185q0 146 110.5 238.5t304.5 92.5h457v-1082h-197v420h-267l-256 -420h-212zM336 749q0 -72 49 -123t147 -51h281v354h-260q-107 0 -162 -53.5t-55 -126.5z" />
+<glyph unicode="&#x450;" horiz-adv-x="1083" d="M99 520v44q0 231 137.5 384.5t325.5 153.5q219 0 331 -132t112 -352v-123h-702l-3 -5q3 -156 79 -256.5t213 -100.5q100 0 175.5 28.5t130.5 78.5l77 -128q-58 -57 -153 -95t-230 -38q-226 0 -359.5 150.5t-133.5 390.5zM233 1499l3 6h230l175 -266h-158zM307 654l2 -5 h499v26q0 116 -62 194t-184 78q-99 0 -169 -83.5t-86 -209.5z" />
+<glyph unicode="&#x451;" horiz-adv-x="1083" d="M99 520v44q0 231 137.5 384.5t325.5 153.5q219 0 331 -132t112 -352v-123h-702l-3 -5q3 -156 79 -256.5t213 -100.5q100 0 175.5 28.5t130.5 78.5l77 -128q-58 -57 -153 -95t-230 -38q-226 0 -359.5 150.5t-133.5 390.5zM214 1284v200h219v-200h-219zM307 654l2 -5h499 v26q0 116 -62 194t-184 78q-99 0 -169 -83.5t-86 -209.5zM684 1284v200h219v-200h-219z" />
+<glyph unicode="&#x452;" d="M-25 1208v155h168v197h197v-197h276v-155h-276v-271q56 78 137.5 121.5t180.5 43.5q173 0 269.5 -104t96.5 -320v-222h1v-545q0 -167 -86 -257.5t-240 -90.5q-33 0 -59 4t-54 13l15 151q13 -5 47 -9t51 -4q60 0 94 51.5t34 141.5v769q0 134 -57.5 198t-171.5 64 q-82 0 -148.5 -38.5t-109.5 -104.5v-799h-197v1208h-168z" />
+<glyph unicode="&#x453;" horiz-adv-x="849" d="M143 0v1082h688v-156h-491v-926h-197zM332 1213l185 266h230l2 -6l-270 -260h-147z" />
+<glyph unicode="&#x454;" horiz-adv-x="1103" d="M107 520v42q0 231 125.5 385.5t360.5 154.5q190 0 310.5 -112t116.5 -275l-2 -6h-178q0 99 -70 168.5t-177 69.5q-141 0 -208.5 -93.5t-72.5 -231.5l2 -5h376v-154h-376l-2 -5q5 -141 72 -233t209 -92q98 0 172.5 60.5t74.5 148.5h177l2 -6q5 -140 -124.5 -248.5 t-301.5 -108.5q-236 0 -361 154t-125 387z" />
+<glyph unicode="&#x455;" horiz-adv-x="1071" d="M109 329l2 6h188q5 -105 78 -153.5t171 -48.5q105 0 164.5 42.5t59.5 111.5q0 65 -49.5 107t-187.5 73q-197 43 -296.5 116.5t-99.5 200.5q0 132 112 225t292 93q189 0 300.5 -97t106.5 -236l-2 -6h-188q0 71 -59.5 127.5t-157.5 56.5q-105 0 -156 -46t-51 -111 q0 -64 45 -101t183 -66q205 -44 305 -119.5t100 -202.5q0 -144 -116.5 -233t-304.5 -89q-207 0 -326 105t-113 245z" />
+<glyph unicode="&#x456;" horiz-adv-x="516" d="M159 0v1082h197v-1082h-197zM159 1359v201h197v-201h-197z" />
+<glyph unicode="&#x457;" horiz-adv-x="515" d="M-90 1262v200h219v-200h-219zM153 0v1082h197v-1082h-197zM380 1262v200h219v-200h-219z" />
+<glyph unicode="&#x458;" horiz-adv-x="530" d="M-66 -419l14 155q14 -5 40 -8.5t43 -3.5q65 0 103.5 44t38.5 143v1171h197v-1171q0 -167 -86 -257.5t-239 -90.5q-31 0 -56.5 4.5t-54.5 13.5zM167 1363v197h197v-197h-197z" />
+<glyph unicode="&#x459;" horiz-adv-x="1782" d="M65 0l4 158l41 1q106 0 152 109t46 352v462h712v-411h269q191 0 298 -92.5t107 -239.5q0 -148 -107.5 -243.5t-297.5 -95.5h-466v926h-318v-306q0 -318 -89 -469t-295 -151h-56zM1020 152h269q105 0 156 56t51 133q0 73 -50.5 124.5t-156.5 51.5h-269v-365z" />
+<glyph unicode="&#x45a;" horiz-adv-x="1781" d="M143 0v1082h197v-408h482v408h197v-412h269q192 0 298.5 -92t106.5 -239q0 -148 -107.5 -243.5t-297.5 -95.5h-466v521h-482v-521h-197zM1019 152h269q105 0 156 56t51 133q0 73 -50.5 124.5t-156.5 51.5h-269v-365z" />
+<glyph unicode="&#x45b;" d="M19 1211v155h124v194h197v-194h320v-155h-320v-274q56 78 137.5 121.5t180.5 43.5q173 0 269.5 -104t96.5 -320v-678h-197v680q0 134 -57.5 198t-171.5 64q-82 0 -148.5 -38.5t-109.5 -104.5v-799h-197v1211h-124z" />
+<glyph unicode="&#x45c;" horiz-adv-x="1086" d="M153 0v1082h197v-457h114l357 457h231l3 -5l-424 -513l458 -559l-3 -5h-242l-365 459h-129v-459h-197zM449 1212l185 266h230l2 -6l-270 -260h-147z" />
+<glyph unicode="&#x45d;" d="M143 0v1082h196v-768l6 -2l478 770h197v-1082h-197v768l-6 2l-478 -770h-196zM256 1477l3 6h230l175 -266h-158z" />
+<glyph unicode="&#x45e;" horiz-adv-x="1030" d="M26 1082h220l228 -681l35 -136h6l266 817h219l-455 -1248q-41 -109 -117.5 -190t-206.5 -81q-24 0 -61 5.5t-57 10.5l20 155q-6 1 35.5 -2t52.5 -3q63 0 103 56t67 124l47 113zM220 1521l2 6h151q0 -66 34 -107t108 -41q72 0 107 41.5t35 106.5h151l2 -6q4 -116 -77 -189 t-218 -73q-138 0 -219 73t-76 189z" />
+<glyph unicode="&#x45f;" d="M143 0v1082h197v-928h483v928h197v-1082h-337v-356h-197v356h-343z" />
+<glyph unicode="&#x460;" horiz-adv-x="1797" d="M157 391v1065h197v-1065q0 -127 55.5 -192.5t147.5 -65.5q108 0 174 65.5t66 192.5v1065h204v-1065q0 -126 61 -192t161 -66q99 0 160 66t61 192v1065h197v-1065q0 -201 -115.5 -306.5t-302.5 -105.5q-109 0 -194 43.5t-132 129.5q-51 -86 -139 -129.5t-201 -43.5 q-180 0 -290 105.5t-110 306.5z" />
+<glyph unicode="&#x461;" horiz-adv-x="1560" d="M124 352v730h197v-730q0 -108 44 -163.5t119 -55.5q89 0 145 56t56 163v730h198v-730q0 -108 49.5 -163.5t132.5 -55.5q81 0 131.5 56t50.5 163v730h197v-730q0 -182 -105 -277.5t-274 -95.5q-93 0 -166 35.5t-117 106.5q-47 -71 -124 -106.5t-174 -35.5 q-163 0 -261.5 95t-98.5 278z" />
+<glyph unicode="&#x462;" horiz-adv-x="1290" d="M-51 1101v155h214v200h197v-200h230v-155h-230v-221h359q233 0 362.5 -119.5t129.5 -316.5q0 -198 -130 -321t-362 -123h-556v1101h-214zM360 154h359q147 0 221 84.5t74 207.5q0 119 -73.5 199t-221.5 80h-359v-571z" />
+<glyph unicode="&#x463;" horiz-adv-x="1113" d="M-37 1082v154h190v324h197v-324h321v-154h-321v-334h269q192 0 298.5 -102.5t106.5 -267.5t-107.5 -271.5t-297.5 -106.5h-466v1082h-190zM350 154h269q106 0 156.5 62.5t50.5 154.5q0 90 -51 156.5t-156 66.5h-269v-440z" />
+<glyph unicode="&#x464;" horiz-adv-x="1837" d="M191 0v1456h198v-622h196v24q0 269 155.5 444.5t402.5 175.5q242 0 379 -128.5t156 -351.5l-2 -6h-189q-24 160 -105 245.5t-239 85.5q-165 0 -263 -133t-98 -330v-26h539v-155h-539v-80q0 -199 98 -332t263 -133q159 0 239.5 85t104.5 248h189l2 -6q-19 -211 -158 -346 t-377 -135q-247 0 -402.5 175t-155.5 444v80h-196v-679h-198z" />
+<glyph unicode="&#x465;" horiz-adv-x="1530" d="M151 0v1082h197v-466h187q14 211 138.5 348.5t345.5 137.5q190 0 310.5 -112t116.5 -275l-2 -6h-178q0 99 -70 168.5t-177 69.5q-141 0 -208.5 -93.5t-72.5 -232.5l2 -5h419v-154h-419l-2 -5q5 -140 72 -232t209 -92q98 0 172.5 60.5t74.5 148.5h177l2 -6 q5 -140 -124.5 -248.5t-301.5 -108.5q-221 0 -345 135.5t-139 347.5h-187v-462h-197z" />
+<glyph unicode="&#x466;" horiz-adv-x="1235" d="M43 0l525 1456h169l514 -1456h-201l-149 438h-161v-438h-196v438h-148l-152 -438h-201zM453 602h392l-191 563h-6z" />
+<glyph unicode="&#x467;" horiz-adv-x="1097" d="M13 0l440 1082h169l443 -1082h-201l-119 294h-106v-294h-196v294h-113l-116 -294h-201zM391 449h292l-126 312l-18 68h-6l-18 -68z" />
+<glyph unicode="&#x468;" horiz-adv-x="1805" d="M209 0v1456h198v-853h382l308 853h169l514 -1456h-201l-149 438h-161v-438h-196v438h-148l-152 -438h-201l158 439h-323v-439h-198zM982 602h392l-191 563h-6z" />
+<glyph unicode="&#x469;" horiz-adv-x="1549" d="M186 0v1082h197v-633h259l258 633h169l443 -1082h-201l-119 294h-106v-294h-196v294h-113l-116 -294h-201l119 293h-196v-293h-197zM838 449h292l-126 312l-18 68h-6l-18 -68z" />
+<glyph unicode="&#x46a;" horiz-adv-x="1759" d="M149 0v371q0 234 123.5 338.5t363.5 104.5h37l-391 642h1209l-391 -642h22q239 0 364 -104.5t125 -338.5v-371h-197v371q0 162 -69.5 225t-222.5 63h-116l-25 -42v-617h-197v632l-17 27h-131q-153 0 -221.5 -63t-68.5 -225v-371h-197zM598 1301l284 -487h10l284 487h-578 z" />
+<glyph unicode="&#x46b;" horiz-adv-x="1516" d="M149 0v162q0 226 106 330t311 111l-284 479h158v1h683v-1h123l-285 -479q198 -10 302 -115t104 -326v-162h-198v162q0 163 -59.5 225.5t-191.5 62.5h-47l-11 -19v-431h-197v440l-6 10h-60q-133 0 -192 -62.5t-59 -225.5v-162h-197zM588 927l176 -320l176 320h-352z" />
+<glyph unicode="&#x46c;" horiz-adv-x="2326" d="M190 0v1456h198v-642h852l-391 642h1209l-391 -642q261 0 386 -104.5t125 -338.5v-371h-197v371q0 162 -69.5 225t-222.5 63h-116l-25 -42v-617h-197v632l-17 27h-131q-153 0 -221.5 -63t-68.5 -225v-371h-197v371q0 185 77 289h-405v-660h-198zM1165 1301l284 -487h10 l284 487h-578z" />
+<glyph unicode="&#x46d;" horiz-adv-x="2019" d="M153 0v1082h197v-477h721l-283 477h964l-285 -479q198 -10 302 -115t104 -326v-162h-198v162q0 163 -59.5 225.5t-191.5 62.5h-47l-11 -19v-431h-197v440l-6 10h-60q-133 0 -192 -62.5t-59 -225.5v-162h-197v162q0 184 70 288h-375v-450h-197zM1094 927l176 -320l176 320 h-352z" />
+<glyph unicode="&#x46e;" horiz-adv-x="1061" d="M74 -122q0 129 89.5 193t250.5 64h42q129 0 203.5 74.5t74.5 193.5q0 133 -82 200t-240 67h-143v155h143q154 0 227 63.5t73 177.5q0 102 -71.5 168.5t-208.5 66.5h-304v155h304q211 0 344.5 -106.5t133.5 -287.5q0 -103 -65 -185t-180 -126q129 -41 198 -129t69 -215 q0 -200 -132.5 -313.5t-343.5 -113.5h-50q-76 0 -110.5 -29.5t-34.5 -82.5q0 -70 46.5 -112.5t112.5 -72.5l-79 -127q-111 47 -188.5 129t-78.5 193zM222 1886v20h166l147 -148l147 148h170v-18l-257 -245h-119z" />
+<glyph unicode="&#x46f;" horiz-adv-x="986" d="M73 -122q0 129 89.5 193t250.5 64h41q110 0 173.5 45.5t63.5 119.5q0 82 -71.5 122.5t-209.5 40.5h-143v155h143q133 0 196 41.5t63 116.5q0 65 -61.5 107.5t-177.5 42.5h-303v156h303q192 0 314.5 -84t122.5 -226q0 -73 -51.5 -132.5t-142.5 -94.5q105 -33 160.5 -94 t55.5 -147q0 -151 -121.5 -237.5t-313.5 -86.5h-49q-76 0 -110.5 -29.5t-34.5 -82.5q0 -70 47 -113t113 -72l-80 -127q-111 47 -188.5 129t-78.5 193zM150 1542v20h166l147 -148l147 148h170v-18l-257 -245h-119z" />
+<glyph unicode="&#x470;" horiz-adv-x="1416" d="M87 885v571h196v-571q0 -170 82 -275t218 -125l6 1v970h198v-971l6 -2q144 19 230.5 124.5t86.5 277.5v571h197v-571q0 -245 -143 -393.5t-377 -172.5v-319h-198v320q-227 24 -364.5 172t-137.5 393z" />
+<glyph unicode="&#x471;" horiz-adv-x="1440" d="M91 596v486h197v-488q0 -207 84.5 -316.5t228.5 -128.5l6 2v930h198v-932l6 -2q177 23 263 143.5t86 276.5q-3 125 -36 253.5t-89 261.5h207q51 -106 83 -234t32 -281q0 -240 -133 -401t-419 -183v-457h-198v459q-247 25 -381.5 176t-134.5 435z" />
+<glyph unicode="&#x472;" horiz-adv-x="1396" d="M113 598v259q0 266 159.5 443t414.5 177q264 0 429.5 -176.5t165.5 -443.5v-259q0 -267 -165.5 -443t-429.5 -176q-255 0 -414.5 176t-159.5 443zM310 598q0 -202 102.5 -330t274.5 -128q183 0 290.5 127.5t107.5 330.5v43h-775v-43zM310 796h775v63q0 200 -108 328 t-290 128q-172 0 -274.5 -128t-102.5 -328v-63z" />
+<glyph unicode="&#x473;" horiz-adv-x="1165" d="M97 529v22q0 240 130 395.5t353 155.5q225 0 355.5 -155t130.5 -396v-22q0 -242 -130 -396t-354 -154t-354.5 154.5t-130.5 395.5zM301 464q8 -146 79.5 -238.5t201.5 -92.5q128 0 199.5 92.5t79.5 238.5l-2 5h-556zM302 629l2 -5h554l2 5q-11 138 -83 228t-197 90 t-196 -89.5t-82 -228.5z" />
+<glyph unicode="&#x474;" horiz-adv-x="1295" d="M22 1456h214l345 -1074l33 -121h6l33 121l253 805q49 156 114.5 222.5t173.5 66.5l50 -1l-1 -169h-12q-50 0 -80.5 -31.5t-57.5 -111.5l-392 -1163h-169z" />
+<glyph unicode="&#x475;" horiz-adv-x="1031" d="M46 1082h202l235 -763l17 -76h6l19 76l149 535q41 127 107 187t148 60q34 0 59.5 -5t49.5 -20l-22 -151q-5 3 -16 5.5t-24 2.5q-32 0 -61.5 -26t-42.5 -68l-296 -839h-149z" />
+<glyph unicode="&#x476;" horiz-adv-x="1295" d="M22 1456h214l345 -1074l33 -121h6l33 121l253 805q49 156 114.5 222.5t173.5 66.5l50 -1l-1 -169h-12q-50 0 -80.5 -31.5t-57.5 -111.5l-392 -1163h-169zM100 1858l3 6h229l241 -261l-2 -5h-171zM444 1859l2 5h212l184 -266h-157z" />
+<glyph unicode="&#x477;" horiz-adv-x="1031" d="M-2 1562l3 6h229l241 -261l-2 -5h-171zM46 1082h202l235 -763l17 -76h6l19 76l149 535q41 127 107 187t148 60q34 0 59.5 -5t49.5 -20l-22 -151q-5 3 -16 5.5t-24 2.5q-32 0 -61.5 -26t-42.5 -68l-296 -839h-149zM342 1563l2 5h212l184 -266h-157z" />
+<glyph unicode="&#x478;" horiz-adv-x="2426" d="M113 598v259q0 266 159.5 443t414.5 177q264 0 429.5 -176.5t165.5 -443.5v-259q0 -267 -165.5 -443t-429.5 -176q-255 0 -414.5 176t-159.5 443zM310 598q0 -202 102.5 -330t274.5 -128q183 0 290.5 127.5t107.5 330.5v261q0 200 -108 328t-290 128q-172 0 -274.5 -128 t-102.5 -328v-261zM1422 1082h220l228 -681l35 -136h6l266 817h219l-455 -1248q-41 -109 -117.5 -190t-206.5 -81q-24 0 -61 5.5t-57 10.5l20 155q-6 1 35.5 -2t52.5 -3q63 0 103 56t67 124l47 113z" />
+<glyph unicode="&#x479;" horiz-adv-x="2194" d="M97 529v22q0 240 130 395.5t353 155.5q225 0 355.5 -155t130.5 -396v-22q0 -242 -130 -396t-354 -154t-354.5 154.5t-130.5 395.5zM294 529q0 -172 72.5 -284t215.5 -112q141 0 214 112t73 284v22q0 170 -73.5 283t-215.5 113q-141 0 -213.5 -113t-72.5 -283v-22z M1190 1082h220l228 -681l35 -136h6l266 817h219l-455 -1248q-41 -109 -117.5 -190t-206.5 -81q-24 0 -61 5.5t-57 10.5l20 155q-6 1 35.5 -2t52.5 -3q63 0 103 56t67 124l47 113z" />
+<glyph unicode="&#x47a;" horiz-adv-x="1396" d="M113 598v259q0 266 159 443q132 146 328 171v118h197v-121q190 -30 319 -168q166 -176 166 -443v-259q0 -267 -166 -443q-129 -138 -319 -167v-129h-197v126q-196 25 -328 170q-159 176 -159 443zM310 598q0 -202 102 -330q75 -94 188 -119v108h197v-104q107 28 180 114 q108 128 108 331v261q0 200 -108 328q-73 86 -180 114v-101h-197v106q-113 -25 -188 -119q-102 -128 -102 -328v-261z" />
+<glyph unicode="&#x47b;" d="M97 529v22q0 240 130 395q100 121 257 148v112h197v-113q155 -28 254 -146q131 -155 131 -396v-22q0 -242 -130 -396q-100 -118 -255 -145v-106h-197v105q-156 27 -257 146q-130 155 -130 396zM294 529q0 -172 72 -284q45 -70 118 -97v103h197v-102q70 27 115 96 q73 112 73 284v22q0 170 -74 283q-44 68 -114 95v-93h-197v95q-72 -27 -118 -97q-72 -113 -72 -283v-22z" />
+<glyph unicode="&#x47c;" horiz-adv-x="1790" d="M157 429v576q0 218 109.5 333t284.5 111l6 -2v-146q-92 0 -147.5 -76t-55.5 -220v-576q0 -145 55.5 -220.5t147.5 -75.5q108 0 174 65.5t66 192.5v432h198v-432q0 -127 66 -192.5t175 -65.5q90 0 146.5 75.5t56.5 220.5v576q0 144 -56.5 220t-146.5 76v146l6 2 q174 4 284 -111t110 -333v-576q0 -219 -110.5 -334.5t-289.5 -115.5q-114 0 -202 42.5t-138 127.5q-51 -85 -139 -127.5t-200 -42.5q-180 0 -290 115.5t-110 334.5zM578 1626v36q0 108 62 163t176 55q72 0 218 -62t260 -62h44v-129h-46q-131 0 -280.5 61.5t-191.5 61.5 q-50 0 -79 -27t-29 -79v-18h-134zM773 1384l58 115l-1 140h188v-123l-165 -198z" />
+<glyph unicode="&#x47d;" horiz-adv-x="1560" d="M123 390v291q0 199 98 304t256 101l6 -3v-146q-75 0 -119 -65.5t-44 -190.5v-291q0 -127 44 -192t119 -65q89 0 145 56t56 163v234h197v-234q0 -107 55.5 -163t145.5 -56q74 0 118.5 65t44.5 192v291q0 125 -44.5 190.5t-118.5 65.5v146l6 3q157 4 255.5 -101t98.5 -304 v-291q0 -201 -99 -306t-261 -105q-99 0 -176.5 36t-123.5 108q-47 -72 -124 -108t-175 -36q-163 0 -261.5 105t-98.5 306zM496 1267v36q0 108 62 163t176 55q72 0 218 -62t260 -62h44v-129h-46q-131 0 -280.5 61.5t-191.5 61.5q-50 0 -79 -27t-29 -79v-18h-134zM694 1038 l55 109l-1 126l185 -6v-117l-160 -184z" />
+<glyph unicode="&#x47e;" horiz-adv-x="1798" d="M157 391v1065h197v-1065q0 -127 55.5 -192.5t147.5 -65.5q108 0 174 65.5t66 192.5v1065h204v-1065q0 -126 61 -192t161 -66q99 0 160 66t61 192v1065h197v-1065q0 -201 -115.5 -306.5t-302.5 -105.5q-109 0 -194 43.5t-132 129.5q-51 -86 -139 -129.5t-201 -43.5 q-180 0 -290 105.5t-110 306.5zM469 1688v109h821l1 -109h-331v-126h-178v126h-313z" />
+<glyph unicode="&#x47f;" horiz-adv-x="1561" d="M124 352v730h197v-730q0 -108 44 -163.5t119 -55.5q89 0 145 56t56 163v730h198v-730q0 -108 49.5 -163.5t132.5 -55.5q81 0 131.5 56t50.5 163v730h197v-730q0 -182 -105 -277.5t-274 -95.5q-93 0 -166 35.5t-117 106.5q-47 -71 -124 -106.5t-174 -35.5 q-163 0 -261.5 95t-98.5 278zM380 1348v109h821l3 -109h-333v-128h-178v128h-313z" />
+<glyph unicode="&#x480;" horiz-adv-x="1336" d="M118 598v259q0 269 155.5 444.5t402.5 175.5t393 -131.5t142 -348.5l-2 -6h-189q0 153 -90 242t-254 89q-165 0 -263 -133t-98 -330v-261q0 -199 98 -332t263 -133h115v-516h-196v368q-215 29 -346 198t-131 415z" />
+<glyph unicode="&#x481;" horiz-adv-x="1099" d="M98 520v42q0 227 127.5 383.5t347.5 156.5q182 0 301 -112t115 -275l-2 -6h-178q0 98 -68.5 168t-167.5 70q-138 0 -208 -115t-70 -270v-42q0 -159 69.5 -273t208.5 -114h106v-516h-197v370q-181 32 -282.5 181t-101.5 352z" />
+<glyph unicode="&#x482;" horiz-adv-x="1282" d="M112 569l71 124l293 -171l202 364l-290 171l73 126l291 -171l185 330h171l-229 -407l293 -171l-75 -124l-288 170l-205 -363l289 -172l-71 -125l-291 170l-181 -320h-174l225 398z" />
+<glyph unicode="&#x483;" horiz-adv-x="1165" d="M212 1189l1 235h544l-1 108l175 -1v-217h-544v-126z" />
+<glyph unicode="&#x484;" horiz-adv-x="1209" d="M251 1303v130h44q113 0 259 62t219 62q113 0 175.5 -55t62.5 -163v-36h-134v18q0 52 -29.5 79t-78.5 27q-43 0 -192.5 -62t-279.5 -62h-46z" />
+<glyph unicode="&#x485;" horiz-adv-x="787" d="M256 1500v123h187l-1 -140l59 -116l-81 -66z" />
+<glyph unicode="&#x486;" horiz-adv-x="847" d="M300 1367l58 116l-1 140h188v-123l-165 -199z" />
+<glyph unicode="&#x488;" horiz-adv-x="2076" d="M64 493q-5 78 51.5 130t152.5 52t152.5 -51.5t52.5 -130.5l-2 -6h-104q0 44 -24 72.5t-75 28.5q-50 0 -73.5 -29t-23.5 -72h-105zM230 -26q-5 78 51.5 130t152.5 52t153 -51.5t53 -130.5l-2 -6h-105q0 44 -24 72.5t-75 28.5q-50 0 -73 -29t-23 -72h-106zM240 996 q-5 79 51.5 130.5t153.5 51.5q96 0 152.5 -51.5t52.5 -130.5l-2 -6h-104q0 43 -24.5 72t-74.5 29t-73.5 -29t-23.5 -72h-106zM813 1273q-5 79 51 130.5t153 51.5q96 0 152.5 -51.5t52.5 -130.5l-2 -6h-104q0 43 -24.5 72t-74.5 29t-73.5 -29t-23.5 -72h-105zM818 -310 q-5 80 51 131t153 51q96 0 152.5 -51t52.5 -131l-2 -6h-104q0 44 -24.5 72.5t-74.5 28.5t-73.5 -28.5t-23.5 -72.5h-105zM1394 -26q-5 78 51.5 130t152.5 52t152.5 -51.5t52.5 -130.5l-2 -6h-104q0 44 -24 72.5t-75 28.5q-50 0 -73.5 -29t-23.5 -72h-105zM1404 996 q-5 78 51.5 130t152.5 52t153 -51.5t53 -130.5l-2 -6h-105q0 44 -24 72.5t-75 28.5q-50 0 -73 -29t-23 -72h-106zM1591 493q-5 78 51.5 130t152.5 52t152.5 -51.5t52.5 -130.5l-2 -6h-104q0 44 -24 72.5t-75 28.5q-50 0 -73.5 -29t-23.5 -72h-105z" />
+<glyph unicode="&#x489;" horiz-adv-x="2008" d="M77 545v98l346 -71v-139l-13 -12zM272 -80l294 200l97 -99l-2 -17l-320 -153zM358 1188l65 69l198 -299l-98 -98l-17 2zM897 -413l70 353h137l11 -14l-122 -339h-96zM897 1140l122 338h96l-70 -352h-136zM1347 1002l2 16l321 153l68 -68q-37 -23 -294 -200zM1388 62 l97 99l17 -2l149 -325l-66 -71zM1587 492v139l13 12l333 -124v-98z" />
+<glyph unicode="&#x48a;" horiz-adv-x="1461" d="M180 0v1456h197v-1109l6 -2l701 1111h197v-1456h-197v1110l-6 2l-701 -1112h-197zM439 1864l2 6h151q0 -66 34 -107t108 -41q72 0 107 41.5t35 106.5h151l2 -6q4 -116 -77 -189t-218 -73q-138 0 -219 73t-76 189zM1178 -296l70 316v163h197v-173l-150 -306h-117z" />
+<glyph unicode="&#x48b;" d="M143 0v1082h196v-768l6 -2l478 770h197v-1082h-197v768l-6 2l-478 -770h-196zM287 1521l2 6h151q0 -66 34 -107t108 -41q72 0 107 41.5t35 106.5h151l2 -6q4 -116 -77 -189t-218 -73q-138 0 -219 73t-76 189zM917 -296l70 316v163h197v-173l-150 -306h-117z" />
+<glyph unicode="&#x48c;" horiz-adv-x="1290" d="M-51 1101v155h214v200h197v-200h230v-155h-230v-221h359q233 0 362.5 -119.5t129.5 -316.5q0 -198 -130 -321t-362 -123h-556v1101h-214zM360 154h359q147 0 221 84.5t74 207.5q0 119 -73.5 199t-221.5 80h-359v-571z" />
+<glyph unicode="&#x48d;" horiz-adv-x="1113" d="M-37 1301v155h190v194h197v-194h321v-155h-321v-553h269q192 0 298.5 -102.5t106.5 -267.5t-107.5 -271.5t-297.5 -106.5h-466v1301h-190zM350 154h269q106 0 156.5 62.5t50.5 154.5q0 90 -51 156.5t-156 66.5h-269v-440z" />
+<glyph unicode="&#x48e;" horiz-adv-x="1309" d="M180 0v1456h557q233 0 362 -120t129 -316q0 -183 -109 -298l135 -146l-116 -104l-147 160q-106 -48 -254 -48h-360v-584h-197zM377 738h360q78 0 136 22l-108 118l115 104l111 -121q40 67 40 157q0 121 -73.5 202t-220.5 81h-360v-563z" />
+<glyph unicode="&#x48f;" horiz-adv-x="1163" d="M143 -416v1498h169l18 -133q53 74 131 113.5t180 39.5q201 0 312.5 -159.5t111.5 -421.5v-21q0 -224 -103 -365l106 -117l-116 -105l-105 116q-87 -50 -203 -50q-100 0 -175.5 33.5t-128.5 100.5v-529h-197zM340 275q37 -67 97 -104.5t147 -37.5q81 0 139 34l-108 120 l116 105l95 -106q42 90 42 214v21q0 184 -72.5 302.5t-213.5 118.5q-85 0 -145 -38.5t-97 -105.5v-523z" />
+<glyph unicode="&#x490;" horiz-adv-x="1124" d="M163 0v1456h700v334h197v-489h-700v-1301h-197z" />
+<glyph unicode="&#x491;" horiz-adv-x="915" d="M143 0v1082h496v315h197v-471h-496v-926h-197z" />
+<glyph unicode="&#x492;" horiz-adv-x="1140" d="M-4 681v155h184v620h893v-155h-696v-465h260v-155h-260v-681h-197v681h-184z" />
+<glyph unicode="&#x493;" horiz-adv-x="849" d="M-13 476v155h156v451h688v-156h-491v-295h288v-155h-288v-476h-197v476h-156z" />
+<glyph unicode="&#x494;" horiz-adv-x="1254" d="M180 0v1456h893v-155h-696v-468h180q284 0 442 -153.5t158 -424.5q0 -263 -121.5 -403t-348.5 -136l-6 2l-2 142q151 0 216 102t65 293q-2 202 -102 307.5t-301 105.5h-180v-668h-197z" />
+<glyph unicode="&#x495;" horiz-adv-x="1032" d="M143 0v1082h688v-156h-491v-279h111q226 0 368.5 -128.5t142.5 -348.5q-2 -138 -99 -278.5t-287 -175.5l-52 149q129 34 185 112.5t56 192.5q-2 147 -87.5 229.5t-226.5 82.5h-111v-482h-197z" />
+<glyph unicode="&#x496;" horiz-adv-x="1869" d="M28 0l487 770l-446 686h230l378 -633h164v633h197v-633h156l378 633h230l-447 -685l487 -771h-245l-406 668h-153v-668h-197v668h-162l-405 -668h-246zM1716 157h197v-516h-197v516z" />
+<glyph unicode="&#x497;" horiz-adv-x="1568" d="M21 0l386 573l-352 509h238l266 -446h123v446h197v-446h123l267 446h238l-353 -509l386 -573h-248l-287 469h-126v-469h-197v469h-127l-286 -469h-248zM1379 157h197v-516h-197v516z" />
+<glyph unicode="&#x498;" horiz-adv-x="1215" d="M125 398l2 6h188q0 -114 99 -192.5t256 -78.5q178 0 279 74.5t101 194.5q0 133 -92 197.5t-272 64.5h-183v156h183q174 0 258 66t84 180q0 112 -90.5 184t-267.5 72q-141 0 -237.5 -71t-96.5 -176h-188l-1 6q-6 176 146.5 286t376.5 110q257 0 406 -108t149 -307 q0 -101 -68 -184.5t-188 -130.5q135 -42 206.5 -129t71.5 -212q0 -201 -159.5 -314t-417.5 -113q-226 0 -388 107t-157 312zM507 86h197v-516h-197v516z" />
+<glyph unicode="&#x499;" horiz-adv-x="1040" d="M93 314l2 6h187q0 -76 66 -132t170 -56q107 0 166.5 49.5t59.5 123.5q0 87 -51.5 127t-161.5 40h-188v160h188q104 0 149 39.5t45 114.5q0 68 -51.5 115t-155.5 47q-93 0 -156 -49t-63 -119h-187l-2 6q-6 139 113.5 226.5t294.5 87.5q190 0 297 -81.5t107 -232.5 q0 -73 -44 -133.5t-123 -95.5q91 -33 139 -97t48 -155q0 -152 -116.5 -238t-307.5 -86q-176 0 -303 85.5t-122 247.5zM421 87h197v-516h-197v516z" />
+<glyph unicode="&#x49a;" horiz-adv-x="1317" d="M180 0v1456h197v-644h152l521 644h218l3 -5l-565 -699l606 -747l-3 -5h-235l-527 657h-170v-657h-197zM1185 157h197v-516h-197v516z" />
+<glyph unicode="&#x49b;" horiz-adv-x="1086" d="M153 0v1082h197v-457h114l357 457h231l3 -5l-424 -513l458 -559l-3 -5h-242l-365 459h-129v-459h-197zM941 157h197v-516h-197v516z" />
+<glyph unicode="&#x49c;" horiz-adv-x="1295" d="M163 0v1456h197v-644h98v255h157v-255h76l317 644h229l-398 -689l440 -767h-246l-340 658h-78v-243h-157v243h-98v-658h-197z" />
+<glyph unicode="&#x49d;" horiz-adv-x="1128" d="M153 0v1082h197v-457h75v211h157v-211h15l255 457h236l-339 -512l374 -570h-249l-269 459h-23v-191h-157v191h-75v-459h-197z" />
+<glyph unicode="&#x49e;" horiz-adv-x="1337" d="M-11 1154v155h211v147h197v-147h233v-155h-233v-342h152l521 644h218l3 -5l-565 -699l606 -747l-3 -5h-235l-527 657h-170v-657h-197v1154h-211z" />
+<glyph unicode="&#x49f;" horiz-adv-x="1070" d="M-49 1214v155h213v191h197v-191h231v-155h-231v-558h126l296 426h236l-370 -492l423 -590h-232l-351 499h-128v-499h-197v1214h-213z" />
+<glyph unicode="&#x4a0;" horiz-adv-x="1680" d="M67 1301v155h673v-644h152l521 644h218l3 -5l-565 -699l606 -747l-3 -5h-235l-527 657h-170v-657h-197v1301h-476z" />
+<glyph unicode="&#x4a1;" horiz-adv-x="1422" d="M65 926v156h610v-457h114l357 457h231l3 -5l-424 -513l458 -559l-3 -5h-242l-365 459h-129v-459h-197v926h-413z" />
+<glyph unicode="&#x4a2;" horiz-adv-x="1461" d="M180 0v1456h197v-658h707v658h197v-1456h-197v643h-707v-643h-197zM1229 157h197v-516h-197v516z" />
+<glyph unicode="&#x4a3;" d="M143 0v1082h197v-468h482v468h197v-1082h-197v460h-482v-460h-197zM967 157h197v-516h-197v516z" />
+<glyph unicode="&#x4a4;" horiz-adv-x="1988" d="M180 0v1456h197v-658h707v658h830v-155h-633v-1301h-197v643h-707v-643h-197z" />
+<glyph unicode="&#x4a5;" horiz-adv-x="1456" d="M143 0v1082h197v-468h482v468h559v-156h-362v-926h-197v460h-482v-460h-197z" />
+<glyph unicode="&#x4a6;" horiz-adv-x="2099" d="M180 0v1456h1103v-623h114q284 0 442 -153.5t158 -424.5q0 -263 -121.5 -403t-348.5 -136l-6 2l-2 142q151 0 216 102t65 293q-2 202 -102 307.5t-301 105.5h-114v-668h-198v1301h-708v-1301h-197z" />
+<glyph unicode="&#x4a7;" horiz-adv-x="1786" d="M143 0v1082h877v-435h168q235 0 383 -128.5t148 -348.5q-2 -138 -99 -278.5t-287 -175.5l-52 149q129 34 185 112.5t56 192.5q-2 148 -93 230t-241 82h-168v-482h-197v926h-483v-926h-197z" />
+<glyph unicode="&#x4a8;" horiz-adv-x="1518" d="M113 677v166q0 271 126 451t323 175l6 -2v-152q-119 0 -188.5 -132.5t-69.5 -337.5v-168q0 -235 113.5 -386t304.5 -151q34 0 65.5 3t60.5 10q-122 98 -187.5 238t-65.5 307v227q0 236 114.5 392.5t297.5 156.5q182 0 296 -153.5t114 -395.5v-248q0 -157 -56.5 -291 t-158.5 -229q51 -14 107.5 -20.5t119.5 -6.5v-160q-109 0 -208.5 18.5t-187.5 55.5q-70 -32 -148 -48.5t-163 -16.5q-273 0 -444 199t-171 499zM798 696q0 -153 58.5 -270.5t169.5 -185.5h6q92 67 143 181.5t51 255.5v251q0 172 -57.5 279t-155.5 107t-156.5 -110 t-58.5 -276v-232z" />
+<glyph unicode="&#x4a9;" horiz-adv-x="1239" d="M108 570v57q0 205 97.5 338.5t249.5 128.5l6 -2v-151q-72 0 -114 -87.5t-42 -224.5v-59q0 -188 80 -309t216 -121q22 0 43.5 2.5t42.5 8.5q-93 79 -142 187t-49 235v103q0 189 86.5 308t232.5 119q145 0 233 -127t88 -321v-105q0 -111 -33 -208.5t-93 -172.5 q38 -11 82 -16t93 -5v-160q-90 0 -170.5 14t-150.5 43q-59 -33 -125 -49.5t-138 -16.5q-218 0 -355.5 168.5t-137.5 422.5zM693 571q0 -102 37.5 -183t107.5 -132l6 1q45 49 70 125.5t25 167.5v108q0 123 -33 203t-88 75h-6q-57 5 -88 -66.5t-31 -191.5v-107z" />
+<glyph unicode="&#x4aa;" horiz-adv-x="1297" d="M118 598v259q0 269 155.5 444.5t402.5 175.5t393 -131.5t142 -348.5l-2 -6h-189q0 153 -90 242t-254 89q-165 0 -263 -133t-98 -330v-261q0 -199 98 -332t263 -133q164 0 254 88.5t90 244.5h189l2 -6q4 -205 -144 -343t-391 -138q-247 0 -402.5 175t-155.5 444zM581 86 h197v-516h-197v516z" />
+<glyph unicode="&#x4ab;" horiz-adv-x="1087" d="M97 520v42q0 231 125.5 385.5t360.5 154.5q190 0 310.5 -112t116.5 -275l-2 -6h-178q0 99 -70 168.5t-177 69.5q-155 0 -221.5 -111.5t-66.5 -273.5v-42q0 -166 66 -276.5t222 -110.5q98 0 172.5 60.5t74.5 148.5h177l2 -6q5 -140 -124.5 -248.5t-301.5 -108.5 q-236 0 -361 154t-125 387zM440 86h197v-516h-197v516z" />
+<glyph unicode="&#x4ac;" horiz-adv-x="1200" d="M34 1301v155h1132v-155h-468v-1301h-197v1301h-467zM646 157h197v-516h-197v516z" />
+<glyph unicode="&#x4ad;" horiz-adv-x="1048" d="M71 929v153h906v-153h-357v-929h-197v929h-352zM568 157h197v-516h-197v516z" />
+<glyph unicode="&#x4ae;" horiz-adv-x="1250" d="M20 1456h225l380 -740l380 740h225l-511 -944v-512h-196v525z" />
+<glyph unicode="&#x4af;" horiz-adv-x="1031" d="M46 1082h202l256 -763l17 -76h6l19 76l249 763h201l-375 -1020v-479h-197v484z" />
+<glyph unicode="&#x4b0;" horiz-adv-x="1250" d="M20 1456h225l380 -740l380 740h225l-419 -774h120v-155h-204l-8 -15v-512h-196v525l-1 2h-232v155h148z" />
+<glyph unicode="&#x4b1;" horiz-adv-x="1031" d="M46 1082h202l256 -763l17 -76h6l19 76l249 763h201l-346 -940h199v-155h-228v-404h-197v404h-216v155h188z" />
+<glyph unicode="&#x4b2;" horiz-adv-x="1295" d="M66 0l472 734l-462 722h236l338 -568l340 568h238l-462 -722l472 -734h-235l-349 578l-350 -578h-238zM1067 157h197v-516h-197v516z" />
+<glyph unicode="&#x4b3;" horiz-adv-x="1030" d="M46 0l361 547l-351 535h227l227 -399l230 399h230l-351 -535l361 -547h-226l-240 409l-240 -409h-228zM838 157h197v-516h-197v516z" />
+<glyph unicode="&#x4b4;" horiz-adv-x="1847" d="M55 1299v155h954v-155h-415v-1144h708v1301h197v-1295h193v-516h-197v355h-1099v1299h-341z" />
+<glyph unicode="&#x4b5;" horiz-adv-x="1427" d="M32 928v155h708v-155h-243v-774h483v928h197v-928h132v-508h-197v354h-812v928h-268z" />
+<glyph unicode="&#x4b6;" horiz-adv-x="1409" d="M147 996v460h198v-460q0 -165 69 -228.5t222 -63.5q104 0 200 14t195 41v697h197v-1456h-197v603q-95 -29 -184 -42t-211 -13q-241 0 -365 105.5t-124 342.5zM1176 157h197v-516h-197v516z" />
+<glyph unicode="&#x4b7;" horiz-adv-x="1131" d="M127 765v318h197v-318q0 -130 56 -191t166 -61q66 0 126 7.5t119 22.5v539h197v-1082h-197v387q-57 -15 -117 -22.5t-128 -7.5q-196 0 -307.5 103t-111.5 305zM936 157h197v-516h-197v516z" />
+<glyph unicode="&#x4b8;" horiz-adv-x="1398" d="M147 996v460h198v-460q0 -165 69 -228.5t222 -63.5h4v313h158v-304q19 2 38 5q96 14 195 41v697h197v-1456h-197v603q-95 -29 -184 -42q-24 -4 -49 -7v-238h-158v232h-4q-241 0 -365 105.5t-124 342.5z" />
+<glyph unicode="&#x4b9;" horiz-adv-x="1132" d="M127 765v318h197v-318q0 -130 56 -191q40 -44 109 -57v278h158v-278l25 3q60 8 119 23v539h197v-1082h-197v387q-57 -15 -117 -23q-13 -1 -27 -3v-132h-158v130q-156 13 -251 101q-111 103 -111 305z" />
+<glyph unicode="&#x4ba;" horiz-adv-x="1398" d="M138 0v1456h197v-603q96 27 184.5 41t210.5 14q240 0 364.5 -106t124.5 -342v-460h-198v460q0 164 -69.5 228t-221.5 64q-105 0 -201 -14.5t-194 -41.5v-696h-197z" />
+<glyph unicode="&#x4bb;" horiz-adv-x="1132" d="M148 2v1082h197v-387q57 15 117 22.5t128 7.5q196 0 307.5 -103t111.5 -305v-318h-197v318q0 130 -56 191t-166 61q-66 0 -126 -7.5t-119 -22.5v-539h-197z" />
+<glyph unicode="&#x4bc;" horiz-adv-x="1739" d="M81 1077l2 5h151q0 -93 41.5 -155.5t126.5 -80.5q27 279 195.5 454t401.5 175q283 0 432 -177.5t149 -488.5v-108h-978l-2 -5q-5 -249 118.5 -407t376.5 -158q107 0 184 23t152 61l48 -139q-50 -36 -146 -67.5t-238 -31.5q-330 0 -513.5 198.5t-183.5 525.5v6 q-158 20 -239.5 118t-77.5 252zM603 841l3 -5h777v31q0 206 -90.5 329.5t-293.5 123.5q-171 0 -276 -135t-120 -344z" />
+<glyph unicode="&#x4bd;" horiz-adv-x="1215" d="M-33 867h157q0 -69 22.5 -118t70.5 -74q33 189 162 308t292 119q219 0 331 -132t112 -352v-123h-702l-3 -5q3 -156 79 -256.5t213 -100.5q100 0 175.5 28.5t130.5 78.5l77 -128q-58 -57 -153 -95t-230 -38q-226 0 -359.5 150.5t-133.5 390.5v8q-119 29 -180 116.5 t-61 222.5zM416 654l2 -5h499v26q0 116 -62 194t-184 78q-99 0 -169 -83.5t-86 -209.5z" />
+<glyph unicode="&#x4be;" horiz-adv-x="1590" d="M81 1077l2 5h151q0 -93 41.5 -155.5t126.5 -80.5q27 279 195.5 454t401.5 175q283 0 432 -177.5t149 -488.5v-108h-978l-2 -5q-5 -249 118.5 -407t376.5 -158q107 0 184 23t152 61l48 -139q-50 -36 -146 -67.5t-238 -31.5q-330 0 -513.5 198.5t-183.5 525.5v6 q-158 20 -239.5 118t-77.5 252zM603 841l3 -5h777v31q0 206 -90.5 329.5t-293.5 123.5q-171 0 -276 -135t-120 -344zM879 91h197v-516h-197v516z" />
+<glyph unicode="&#x4bf;" horiz-adv-x="1215" d="M-33 867h157q0 -69 22.5 -118t70.5 -74q33 189 162 308t292 119q219 0 331 -132t112 -352v-123h-702l-3 -5q3 -156 79 -256.5t213 -100.5q100 0 175.5 28.5t130.5 78.5l77 -128q-58 -57 -153 -95t-230 -38q-226 0 -359.5 150.5t-133.5 390.5v8q-119 29 -180 116.5 t-61 222.5zM416 654l2 -5h499v26q0 116 -62 194t-184 78q-99 0 -169 -83.5t-86 -209.5zM612 93h197v-516h-197v516z" />
+<glyph unicode="&#x4c0;" horiz-adv-x="579" d="M190 0v1456h198v-1456h-198z" />
+<glyph unicode="&#x4c1;" horiz-adv-x="1869" d="M28 0l487 770l-446 686h230l378 -633h164v633h197v-633h156l378 633h230l-447 -685l487 -771h-245l-406 668h-153v-668h-197v668h-162l-405 -668h-246zM644 1864l2 6h151q0 -66 34 -107t108 -41q72 0 107 41.5t35 106.5h151l2 -6q4 -116 -77 -189t-218 -73 q-138 0 -219 73t-76 189z" />
+<glyph unicode="&#x4c2;" horiz-adv-x="1568" d="M21 0l386 573l-352 509h238l266 -446h123v446h197v-446h123l267 446h238l-353 -509l386 -573h-248l-287 469h-126v-469h-197v469h-127l-286 -469h-248zM490 1521l2 6h151q0 -66 34 -107t108 -41q72 0 107 41.5t35 106.5h151l2 -6q4 -116 -77 -189t-218 -73 q-138 0 -219 73t-76 189z" />
+<glyph unicode="&#x4c3;" horiz-adv-x="1295" d="M163 0v1456h197v-626h128l520 626h222l2 -5l-523 -625q246 -23 381 -173.5t135 -400.5q0 -263 -121.5 -403t-348.5 -136l-6 2l-2 142q151 0 216 102t65 293q-2 202 -102 307t-301 105h-265v-664h-197z" />
+<glyph unicode="&#x4c4;" horiz-adv-x="1120" d="M153 0v1082h197v-457h84l387 457h231l2 -5l-405 -464q184 -30 291.5 -141t107.5 -296q-2 -133 -99 -266.5t-287 -167.5l-51 150q128 32 184.5 104.5t56.5 179.5q-2 144 -91 213.5t-243 69.5h-168v-459h-197z" />
+<glyph unicode="&#x4c5;" horiz-adv-x="1451" d="M49 0v154h41q138 0 199 142.5t62 473.5l1 686h919v-1456h-197v1301h-526l-1 -531q0 -400 -103 -585t-342 -185h-53zM1168 -296l70 316v163h197v-173l-150 -306h-117z" />
+<glyph unicode="&#x4c6;" horiz-adv-x="1133" d="M26 0l4 168l41 1q105 0 146.5 102.5t41.5 348.5v462h761v-1082h-197v926h-366v-306q0 -320 -85 -470t-290 -150h-56zM917 -296l70 316v163h197v-173l-150 -306h-117z" />
+<glyph unicode="&#x4c7;" horiz-adv-x="1461" d="M180 0v1456h197v-658h706v658h198v-1545q0 -167 -86.5 -257.5t-240.5 -90.5q-31 0 -57.5 4.5t-54.5 13.5l14 150q13 -5 47 -9t51 -4q61 0 95 51.5t34 141.5v732h-706v-643h-197z" />
+<glyph unicode="&#x4c8;" d="M143 0v1082h197v-468h482v468h197v-1171q0 -167 -86.5 -257.5t-239.5 -90.5q-31 0 -57.5 4.5t-54.5 13.5l15 150q13 -5 46.5 -9t50.5 -4q60 0 94.5 51.5t34.5 141.5v549h-482v-460h-197z" />
+<glyph unicode="&#x4c9;" horiz-adv-x="1461" d="M180 0v1456h197v-658h707v658h197v-1456h-197v643h-707v-643h-197zM1178 -296l70 316v163h197v-173l-150 -306h-117z" />
+<glyph unicode="&#x4ca;" d="M143 0v1082h197v-468h482v468h197v-1082h-197v460h-482v-460h-197zM916 -296l70 316v163h197v-173l-150 -306h-117z" />
+<glyph unicode="&#x4cb;" horiz-adv-x="1409" d="M147 996v460h198v-460q0 -165 69 -228.5t222 -63.5q104 0 200 14t195 41v697h197v-1456h-197v603q-95 -29 -184 -42t-211 -13q-241 0 -365 105.5t-124 342.5zM885 157h197v-516h-197v516z" />
+<glyph unicode="&#x4cc;" horiz-adv-x="1131" d="M127 765v318h197v-318q0 -130 56 -191t166 -61q66 0 126 7.5t119 22.5v539h197v-1082h-197v387q-57 -15 -117 -22.5t-128 -7.5q-196 0 -307.5 103t-111.5 305zM644 157h197v-516h-197v516z" />
+<glyph unicode="&#x4cd;" horiz-adv-x="1799" d="M180 0v1456h252l464 -1183h6l464 1183h252v-1456h-197v576l20 592l-5 1l-472 -1169h-131l-470 1166l-5 -1l19 -589v-576h-197zM1515 -296l70 316v163h197v-173l-150 -306h-117z" />
+<glyph unicode="&#x4ce;" horiz-adv-x="1528" d="M153 0v1082h254l352 -824h6l354 824h246v-1082h-197v751l-6 2l-332 -753h-136l-338 770l-6 -2v-768h-197zM1262 -296l70 316v163h197v-173l-150 -306h-117z" />
+<glyph unicode="&#x4cf;" horiz-adv-x="579" d="M190 0v1456h198v-1456h-198z" />
+<glyph unicode="&#x4d0;" horiz-adv-x="1326" d="M20 0l563 1456h169l554 -1456h-201l-136 375h-610l-138 -375h-201zM369 1864l2 6h151q0 -66 34 -107t108 -41q72 0 107 41.5t35 106.5h151l2 -6q4 -116 -77 -189t-218 -73q-138 0 -219 73t-76 189zM420 540h490l-240 663h-6z" />
+<glyph unicode="&#x4d1;" horiz-adv-x="1126" d="M106 304q0 155 125.5 242.5t340.5 87.5h214v107q0 95 -58 150.5t-164 55.5q-95 0 -154.5 -48.5t-59.5 -116.5h-188l-2 6q-6 118 111.5 216t303.5 98q184 0 296 -93.5t112 -269.5v-521q0 -58 6 -112t22 -106h-203q-10 49 -15.5 86.5t-6.5 75.5q-55 -78 -143.5 -130.5 t-190.5 -52.5q-169 0 -257.5 86.5t-88.5 238.5zM261 1542l2 6h151q0 -66 34 -107t108 -41q72 0 107 41.5t35 106.5h151l2 -6q4 -116 -77 -189t-218 -73q-138 0 -219 73t-76 189zM303 300q0 -72 45 -114t133 -42q107 0 193 55t112 126v176h-221q-119 0 -190.5 -60t-71.5 -141 z" />
+<glyph unicode="&#x4d2;" horiz-adv-x="1326" d="M20 0l563 1456h169l554 -1456h-201l-136 375h-610l-138 -375h-201zM319 1605v200h219v-200h-219zM420 540h490l-240 663h-6zM789 1605v200h219v-200h-219z" />
+<glyph unicode="&#x4d3;" horiz-adv-x="1126" d="M106 304q0 155 125.5 242.5t340.5 87.5h214v107q0 95 -58 150.5t-164 55.5q-95 0 -154.5 -48.5t-59.5 -116.5h-188l-2 6q-6 118 111.5 216t303.5 98q184 0 296 -93.5t112 -269.5v-521q0 -58 6 -112t22 -106h-203q-10 49 -15.5 86.5t-6.5 75.5q-55 -78 -143.5 -130.5 t-190.5 -52.5q-169 0 -257.5 86.5t-88.5 238.5zM211 1283v200h219v-200h-219zM303 300q0 -72 45 -114t133 -42q107 0 193 55t112 126v176h-221q-119 0 -190.5 -60t-71.5 -141zM681 1283v200h219v-200h-219z" />
+<glyph unicode="&#x4d4;" horiz-adv-x="1922" d="M-20 0l880 1456h967v-155h-691l20 -466h590v-155h-584l22 -526h705v-154h-895l-15 350h-557l-202 -350h-240zM525 529h447l-31 710l-5 2z" />
+<glyph unicode="&#x4d5;" horiz-adv-x="1729" d="M58 304q0 158 115 244.5t335 86.5h229v85q0 106 -51.5 166.5t-149.5 60.5q-103 0 -164 -55t-61 -133l-188 18l-2 6q-5 138 109.5 228.5t305.5 90.5q114 0 201.5 -40.5t137.5 -117.5q64 75 151.5 116.5t188.5 41.5q214 0 329.5 -130t115.5 -358v-119h-709l-2 -5 q1 -159 79.5 -258t233.5 -99q103 0 169.5 27.5t144.5 78.5l67 -138q-53 -44 -147 -83t-234 -39q-136 0 -240 48.5t-170 138.5q-56 -79 -167.5 -133t-271.5 -54q-170 0 -262.5 87t-92.5 238zM255 300q0 -74 50 -120.5t147 -46.5q76 0 159 43.5t126 100.5v216h-227 q-120 0 -187.5 -56t-67.5 -137zM953 645l2 -5h508v31q0 122 -60 199t-188 77q-113 0 -182 -84.5t-80 -217.5z" />
+<glyph unicode="&#x4d6;" horiz-adv-x="1197" d="M180 0v1456h955v-155h-758v-471h667v-155h-667v-521h769v-154h-966zM334 1864l2 6h151q0 -66 34 -107t108 -41q72 0 107 41.5t35 106.5h151l2 -6q4 -116 -77 -189t-218 -73q-138 0 -219 73t-76 189z" />
+<glyph unicode="&#x4d7;" horiz-adv-x="1083" d="M99 520v44q0 231 137.5 384.5t325.5 153.5q219 0 331 -132t112 -352v-123h-702l-3 -5q3 -156 79 -256.5t213 -100.5q100 0 175.5 28.5t130.5 78.5l77 -128q-58 -57 -153 -95t-230 -38q-226 0 -359.5 150.5t-133.5 390.5zM264 1543l2 6h151q0 -66 34 -107t108 -41 q72 0 107 41.5t35 106.5h151l2 -6q4 -116 -77 -189t-218 -73q-138 0 -219 73t-76 189zM307 654l2 -5h499v26q0 116 -62 194t-184 78q-99 0 -169 -83.5t-86 -209.5z" />
+<glyph unicode="&#x4d8;" horiz-adv-x="1425" d="M89 644v108h1020l2 5q4 248 -120.5 406.5t-376.5 158.5q-108 0 -184.5 -23.5t-150.5 -60.5l-49 139q50 35 145.5 67.5t238.5 32.5q330 0 514.5 -199.5t184.5 -525.5v-49q0 -316 -175 -520t-427 -204q-304 0 -463 176.5t-159 488.5zM286 586q0 -207 99.5 -330t325.5 -123 q170 0 275 134.5t122 344.5l-3 5h-819v-31z" />
+<glyph unicode="&#x4d9;" horiz-adv-x="1090" d="M116 464v123h702l3 5q-3 156 -79 256.5t-213 100.5q-100 0 -175.5 -28.5t-130.5 -78.5l-77 128q58 57 153 95t230 38q226 0 359.5 -150.5t133.5 -390.5v-44q0 -231 -137.5 -384.5t-325.5 -153.5q-219 0 -331 132t-112 352zM313 407q0 -116 62 -194t184 -78q99 0 169 83.5 t86 209.5l-2 5h-499v-26z" />
+<glyph unicode="&#x4da;" horiz-adv-x="1425" d="M89 644v108h1020l2 5q4 248 -120.5 406.5t-376.5 158.5q-108 0 -184.5 -23.5t-150.5 -60.5l-49 139q50 35 145.5 67.5t238.5 32.5q330 0 514.5 -199.5t184.5 -525.5v-49q0 -316 -175 -520t-427 -204q-304 0 -463 176.5t-159 488.5zM285 1559v200h219v-200h-219zM286 586 q0 -207 99.5 -330t325.5 -123q170 0 275 134.5t122 344.5l-3 5h-819v-31zM755 1559v200h219v-200h-219z" />
+<glyph unicode="&#x4db;" horiz-adv-x="1090" d="M116 464v123h702l3 5q-3 156 -79 256.5t-213 100.5q-100 0 -175.5 -28.5t-130.5 -78.5l-77 128q58 57 153 95t230 38q226 0 359.5 -150.5t133.5 -390.5v-44q0 -231 -137.5 -384.5t-325.5 -153.5q-219 0 -331 132t-112 352zM224 1283v200h219v-200h-219zM313 407 q0 -116 62 -194t184 -78q99 0 169 83.5t86 209.5l-2 5h-499v-26zM694 1283v200h219v-200h-219z" />
+<glyph unicode="&#x4dc;" horiz-adv-x="1687" d="M28 0l487 770l-446 686h230l378 -633h164v633h197v-633h156l378 633h230l-447 -685l487 -771h-245l-406 668h-153v-668h-197v668h-162l-405 -668h-246zM599 1605v200h219v-200h-219zM1069 1605v200h219v-200h-219z" />
+<glyph unicode="&#x4dd;" horiz-adv-x="1473" d="M21 0l386 573l-352 509h238l266 -446h123v446h197v-446h123l267 446h238l-353 -509l386 -573h-248l-287 469h-126v-469h-197v469h-127l-286 -469h-248zM392 1262v200h219v-200h-219zM862 1262v200h219v-200h-219z" />
+<glyph unicode="&#x4de;" horiz-adv-x="1385" d="M125 398l2 6h188q0 -114 99 -192.5t256 -78.5q178 0 279 74.5t101 194.5q0 133 -92 197.5t-272 64.5h-183v156h183q174 0 258 66t84 180q0 112 -90.5 184t-267.5 72q-141 0 -237.5 -71t-96.5 -176h-188l-1 6q-6 176 146.5 286t376.5 110q257 0 406 -108t149 -307 q0 -101 -68 -184.5t-188 -130.5q135 -42 206.5 -129t71.5 -212q0 -201 -159.5 -314t-417.5 -113q-226 0 -388 107t-157 312zM339 1626v200h219v-200h-219zM809 1626v200h219v-200h-219z" />
+<glyph unicode="&#x4df;" horiz-adv-x="1103" d="M93 314l2 6h187q0 -76 66 -132t170 -56q107 0 166.5 49.5t59.5 123.5q0 87 -51.5 127t-161.5 40h-188v160h188q104 0 149 39.5t45 114.5q0 68 -51.5 115t-155.5 47q-93 0 -156 -49t-63 -119h-187l-2 6q-6 139 113.5 226.5t294.5 87.5q190 0 297 -81.5t107 -232.5 q0 -73 -44 -133.5t-123 -95.5q91 -33 139 -97t48 -155q0 -152 -116.5 -238t-307.5 -86q-176 0 -303 85.5t-122 247.5zM207 1282v200h219v-200h-219zM677 1282v200h219v-200h-219z" />
+<glyph unicode="&#x4e0;" horiz-adv-x="1194" d="M110 398l2 6h189q0 -114 76 -192.5t197 -78.5q139 0 218.5 74.5t79.5 194.5q0 153 -80.5 224.5t-240.5 71.5h-146v154l376 444l-2 5h-631v155h869l1 -120l-409 -491q219 -13 339.5 -126.5t120.5 -312.5q0 -200 -137 -313.5t-358 -113.5q-192 0 -330.5 107t-133.5 312z " />
+<glyph unicode="&#x4e1;" horiz-adv-x="1194" d="M110 23l2 6h189q0 -112 76 -190.5t197 -78.5q139 0 218.5 74.5t79.5 192.5q0 154 -81 225t-241 71h-147v154l357 444l-3 5h-609v156h869l1 -120l-396 -493q214 -16 330.5 -129t116.5 -309q0 -198 -137.5 -312t-357.5 -114q-191 0 -330 107.5t-134 310.5z" />
+<glyph unicode="&#x4e2;" horiz-adv-x="1461" d="M180 0v1456h197v-1109l6 -2l701 1111h197v-1456h-197v1110l-6 2l-701 -1112h-197zM378 1640v146h721v-146h-721z" />
+<glyph unicode="&#x4e3;" d="M143 0v1082h196v-768l6 -2l478 770h197v-1082h-197v768l-6 2l-478 -770h-196zM226 1299v146h721v-146h-721z" />
+<glyph unicode="&#x4e4;" horiz-adv-x="1461" d="M180 0v1456h197v-1109l6 -2l701 1111h197v-1456h-197v1110l-6 2l-701 -1112h-197zM389 1605v200h219v-200h-219zM859 1605v200h219v-200h-219z" />
+<glyph unicode="&#x4e5;" d="M143 0v1082h196v-768l6 -2l478 770h197v-1082h-197v768l-6 2l-478 -770h-196zM237 1262v200h219v-200h-219zM707 1262v200h219v-200h-219z" />
+<glyph unicode="&#x4e6;" horiz-adv-x="1396" d="M113 598v259q0 266 159.5 443t414.5 177q264 0 429.5 -176.5t165.5 -443.5v-259q0 -267 -165.5 -443t-429.5 -176q-255 0 -414.5 176t-159.5 443zM310 598q0 -202 102.5 -330t274.5 -128q183 0 290.5 127.5t107.5 330.5v261q0 200 -108 328t-290 128q-172 0 -274.5 -128 t-102.5 -328v-261zM354 1626v200h219v-200h-219zM824 1626v200h219v-200h-219z" />
+<glyph unicode="&#x4e7;" d="M97 529v22q0 240 130 395.5t353 155.5q225 0 355.5 -155t130.5 -396v-22q0 -242 -130 -396t-354 -154t-354.5 154.5t-130.5 395.5zM238 1283v200h219v-200h-219zM294 529q0 -172 72.5 -284t215.5 -112q141 0 214 112t73 284v22q0 170 -73.5 283t-215.5 113 q-141 0 -213.5 -113t-72.5 -283v-22zM708 1283v200h219v-200h-219z" />
+<glyph unicode="&#x4e8;" horiz-adv-x="1396" d="M113 598v259q0 266 159.5 443t414.5 177q264 0 429.5 -176.5t165.5 -443.5v-259q0 -267 -165.5 -443t-429.5 -176q-255 0 -414.5 176t-159.5 443zM310 598q0 -202 102.5 -330t274.5 -128q183 0 290.5 127.5t107.5 330.5v43h-775v-43zM310 796h775v63q0 200 -108 328 t-290 128q-172 0 -274.5 -128t-102.5 -328v-63z" />
+<glyph unicode="&#x4e9;" horiz-adv-x="1165" d="M97 529v22q0 240 130 395.5t353 155.5q225 0 355.5 -155t130.5 -396v-22q0 -242 -130 -396t-354 -154t-354.5 154.5t-130.5 395.5zM301 464q8 -146 79.5 -238.5t201.5 -92.5q128 0 199.5 92.5t79.5 238.5l-2 5h-556zM302 629l2 -5h554l2 5q-11 138 -83 228t-197 90 t-196 -89.5t-82 -228.5z" />
+<glyph unicode="&#x4ea;" horiz-adv-x="1396" d="M113 598v259q0 266 159.5 443t414.5 177q264 0 429.5 -176.5t165.5 -443.5v-259q0 -267 -165.5 -443t-429.5 -176q-255 0 -414.5 176t-159.5 443zM310 598q0 -202 102.5 -330t274.5 -128q183 0 290.5 127.5t107.5 330.5v43h-775v-43zM310 796h775v63q0 200 -108 328 t-290 128q-172 0 -274.5 -128t-102.5 -328v-63zM376 1600v200h219v-200h-219zM846 1600v200h219v-200h-219z" />
+<glyph unicode="&#x4eb;" horiz-adv-x="1165" d="M97 529v22q0 240 130 395.5t353 155.5q225 0 355.5 -155t130.5 -396v-22q0 -242 -130 -396t-354 -154t-354.5 154.5t-130.5 395.5zM215 1311v200h219v-200h-219zM301 464q8 -146 79.5 -238.5t201.5 -92.5q128 0 199.5 92.5t79.5 238.5l-2 5h-556zM302 629l2 -5h554l2 5 q-11 138 -83 228t-197 90t-196 -89.5t-82 -228.5zM685 1311v200h219v-200h-219z" />
+<glyph unicode="&#x4ec;" horiz-adv-x="1385" d="M186 459l2 6h189q0 -154 89 -242.5t254 -88.5q164 0 262.5 132.5t98.5 330.5v81h-574v155h574v25q0 198 -98.5 331.5t-262.5 133.5q-165 0 -254 -89t-89 -244h-189l-2 6q-5 203 143.5 342.5t390.5 139.5q247 0 403 -175.5t156 -444.5v-259q0 -270 -156 -444.5 t-403 -174.5t-393 130.5t-141 348.5zM348 1627v200h219v-200h-219zM818 1627v200h219v-200h-219z" />
+<glyph unicode="&#x4ed;" horiz-adv-x="1102" d="M104 365l2 6h179q0 -99 67.5 -168.5t167.5 -69.5q126 0 195 98t77 238l-3 5h-385v154h383l2 5q-10 131 -78.5 222.5t-190.5 91.5q-92 0 -163.5 -61t-71.5 -148h-178l-2 6q-6 139 121.5 248.5t293.5 109.5q220 0 347.5 -156.5t127.5 -383.5v-42q0 -228 -128 -384.5 t-347 -156.5q-183 0 -302 111.5t-114 274.5zM203 1283v200h219v-200h-219zM673 1283v200h219v-200h-219z" />
+<glyph unicode="&#x4ee;" horiz-adv-x="1287" d="M85 1456h221l282 -681l73 -188h6l328 869h229l-509 -1217q-59 -131 -128.5 -195.5t-221.5 -64.5q-25 0 -58.5 3t-42.5 6l5 149q10 -2 43.5 -3t50.5 -1q71 0 101.5 36t68.5 116l40 84zM291 1640v146h721v-146h-721z" />
+<glyph unicode="&#x4ef;" horiz-adv-x="1030" d="M26 1082h220l228 -681l35 -136h6l266 817h219l-455 -1248q-41 -109 -117.5 -190t-206.5 -81q-24 0 -61 5.5t-57 10.5l20 155q-6 1 35.5 -2t52.5 -3q63 0 103 56t67 124l47 113zM159 1299v146h721v-146h-721z" />
+<glyph unicode="&#x4f0;" horiz-adv-x="1287" d="M85 1456h221l282 -681l73 -188h6l328 869h229l-509 -1217q-59 -131 -128.5 -195.5t-221.5 -64.5q-25 0 -58.5 3t-42.5 6l5 149q10 -2 43.5 -3t50.5 -1q71 0 101.5 36t68.5 116l40 84zM302 1605v200h219v-200h-219zM772 1605v200h219v-200h-219z" />
+<glyph unicode="&#x4f1;" horiz-adv-x="1030" d="M26 1082h220l228 -681l35 -136h6l266 817h219l-455 -1248q-41 -109 -117.5 -190t-206.5 -81q-24 0 -61 5.5t-57 10.5l20 155q-6 1 35.5 -2t52.5 -3q63 0 103 56t67 124l47 113zM170 1262v200h219v-200h-219zM640 1262v200h219v-200h-219z" />
+<glyph unicode="&#x4f2;" horiz-adv-x="1287" d="M85 1456h221l282 -681l73 -188h6l328 869h229l-509 -1217q-59 -131 -128.5 -195.5t-221.5 -64.5q-25 0 -58.5 3t-42.5 6l5 149q10 -2 43.5 -3t50.5 -1q71 0 101.5 36t68.5 116l40 84zM410 1601l184 266h211l2 -5l-240 -261h-157zM679 1606l241 261h229l3 -6l-300 -260 h-171z" />
+<glyph unicode="&#x4f3;" horiz-adv-x="1030" d="M26 1082h220l228 -681l35 -136h6l266 817h219l-455 -1248q-41 -109 -117.5 -190t-206.5 -81q-24 0 -61 5.5t-57 10.5l20 155q-6 1 35.5 -2t52.5 -3q63 0 103 56t67 124l47 113zM278 1258l184 266h211l2 -5l-240 -261h-157zM547 1263l241 261h229l3 -6l-300 -260h-171z " />
+<glyph unicode="&#x4f4;" horiz-adv-x="1409" d="M147 996v460h198v-460q0 -165 69 -228.5t222 -63.5q104 0 200 14t195 41v697h197v-1456h-197v603q-95 -29 -184 -42t-211 -13q-241 0 -365 105.5t-124 342.5zM344 1605v200h219v-200h-219zM814 1605v200h219v-200h-219z" />
+<glyph unicode="&#x4f5;" horiz-adv-x="1131" d="M127 765v318h197v-318q0 -130 56 -191t166 -61q66 0 126 7.5t119 22.5v539h197v-1082h-197v387q-57 -15 -117 -22.5t-128 -7.5q-196 0 -307.5 103t-111.5 305zM208 1262v200h219v-200h-219zM678 1262v200h219v-200h-219z" />
+<glyph unicode="&#x4f6;" horiz-adv-x="1140" d="M180 0v1456h893v-155h-696v-1301h-197zM325 157h197v-516h-197v516z" />
+<glyph unicode="&#x4f7;" horiz-adv-x="849" d="M143 0v1082h688v-156h-491v-926h-197zM255 157h197v-516h-197v516z" />
+<glyph unicode="&#x4f8;" horiz-adv-x="1782" d="M180 0v1456h197v-596h359q234 0 363 -115t129 -311t-129.5 -315t-362.5 -119h-556zM377 154h359q148 0 221.5 80t73.5 202q0 118 -73.5 193.5t-221.5 75.5h-359v-551zM548 1605v200h219v-200h-219zM1018 1605v200h219v-200h-219zM1405 0v1456h198v-1456h-198z" />
+<glyph unicode="&#x4f9;" horiz-adv-x="1617" d="M173 0v1082h197v-412h269q192 0 298.5 -92t106.5 -239q0 -148 -107.5 -243.5t-297.5 -95.5h-466zM370 154h269q106 0 156.5 51t50.5 127q0 74 -51 129t-156 55h-269v-362zM460 1262v200h219v-200h-219zM930 1262v200h219v-200h-219zM1235 0v1082h197v-1082h-197z" />
+<glyph unicode="&#x4fa;" horiz-adv-x="1215" d="M65 711v155h641v-155h-641zM196 -419l14 160q14 -5 46 -8.5t51 -3.5q60 0 94 47t34 135v243h197v-243q0 -167 -86 -257.5t-239 -90.5q-31 0 -56.5 4.5t-54.5 13.5zM256 0v1456h893v-155h-696v-1301h-197z" />
+<glyph unicode="&#x4fb;" horiz-adv-x="841" d="M66 537v155h641v-155h-641zM180 -419l14 160q14 -5 46 -8.5t51 -3.5q60 0 94 47t34 135v243h197v-243q0 -167 -86 -257.5t-239 -90.5q-31 0 -56.5 4.5t-54.5 13.5zM241 0v1082h688v-156h-491v-926h-197z" />
+<glyph unicode="&#x4fc;" horiz-adv-x="1295" d="M66 0l472 734l-462 722h236l338 -568l340 568h238l-462 -722l472 -734h-235l-349 578l-350 -578h-238zM879 -419l14 160q14 -5 46 -8.5t51 -3.5q60 0 94 47t34 135v243h197v-243q0 -167 -86 -257.5t-239 -90.5q-31 0 -56.5 4.5t-54.5 13.5z" />
+<glyph unicode="&#x4fd;" horiz-adv-x="1030" d="M46 0l361 547l-351 535h227l227 -399l230 399h230l-351 -535l361 -547h-226l-240 409l-240 -409h-228zM650 -419l14 160q14 -5 46 -8.5t51 -3.5q60 0 94 47t34 135v243h197v-243q0 -167 -86 -257.5t-239 -90.5q-31 0 -56.5 4.5t-54.5 13.5z" />
+<glyph unicode="&#x4fe;" horiz-adv-x="1295" d="M66 0l429 667h-155v155h141l-405 634h236l338 -568l340 568h238l-406 -634h159v-155h-172l429 -667h-235l-349 578l-350 -578h-238z" />
+<glyph unicode="&#x4ff;" horiz-adv-x="1030" d="M46 0l315 478h-178v155h167l-294 449h227l227 -399l230 399h230l-295 -449h149v-155h-160l316 -478h-226l-240 409l-240 -409h-228z" />
+<glyph unicode="&#x500;" horiz-adv-x="1287" d="M91 444q0 197 128.5 316.5t362.5 119.5h359v576h197v-1456h-556q-233 0 -362 123t-129 321zM288 446q0 -123 73 -207.5t221 -84.5h359v571h-359q-148 0 -221 -80t-73 -199z" />
+<glyph unicode="&#x501;" d="M98 500v21q0 261 111.5 421t312.5 160q95 0 168.5 -35t125.5 -102v595h197v-1560h-161l-23 133q-53 -76 -130 -115t-179 -39q-198 0 -310 143.5t-112 377.5zM295 500q0 -164 67 -262.5t208 -98.5q88 0 148 40t98 112v505q-38 67 -98.5 106.5t-145.5 39.5 q-142 0 -209.5 -117t-67.5 -304v-21z" />
+<glyph unicode="&#x502;" horiz-adv-x="1700" d="M91 444q0 197 128.5 316.5t362.5 119.5h359v576h197v-1303l83 1q106 1 164 71.5t62 196.5q1 77 -14.5 160.5t-45.5 162.5h190q33 -100 51 -175.5t16 -147.5q-4 -204 -125.5 -313t-297.5 -109h-639q-233 0 -362 123t-129 321zM288 446q0 -123 73 -207.5t221 -84.5h359v571 h-359q-148 0 -221 -80t-73 -199z" />
+<glyph unicode="&#x503;" horiz-adv-x="1765" d="M98 500v21q0 261 111.5 421t312.5 160q89 0 159 -31t122 -90v579h197v-1215q-2 -95 44 -153.5t123 -58.5q134 1 208 106t78 290q1 97 -14.5 198.5t-45.5 203.5l190 1q33 -122 51 -216.5t16 -186.5q-4 -266 -142 -408t-341 -142q-120 -2 -201.5 40.5t-122.5 135.5 q-53 -87 -133.5 -131.5t-189.5 -44.5q-198 0 -310 143.5t-112 377.5zM295 500q0 -164 67 -262.5t208 -98.5q84 0 142 36.5t97 102.5q-3 15 -4.5 32t-1.5 35v472q-39 58 -96 91.5t-135 33.5q-142 0 -209.5 -117t-67.5 -304v-21z" />
+<glyph unicode="&#x504;" horiz-adv-x="1623" d="M54 1301v155h359q239 0 365.5 -106t126.5 -307q0 -113 -58.5 -195.5t-169.5 -131.5q118 -40 170.5 -128t52.5 -216v-68q-1 -76 38.5 -123.5t106.5 -47.5q116 1 180 107t68 289q1 97 -14.5 199t-45.5 204h190q34 -134 51 -223.5t16 -179.5q-4 -265 -131 -407.5 t-314 -142.5q-160 -3 -247 75.5t-95 249.5v66q0 118 -68.5 190.5t-184.5 72.5h-191v155h136q166 0 239.5 63t73.5 194q0 121 -71.5 188.5t-223.5 67.5h-359z" />
+<glyph unicode="&#x505;" horiz-adv-x="1324" d="M49 1082h268q206 0 319 -85t113 -237q0 -81 -48 -138t-141 -93q99 -28 143.5 -89t44.5 -150v-77q-1 -42 18.5 -64t66.5 -22q106 2 164.5 78.5t62.5 213.5q1 76 -15 158t-46 161h190q34 -102 52 -175t16 -144q-5 -215 -126 -330t-298 -115q-138 -3 -207 54t-75 186v75 q0 71 -53 110.5t-151 39.5h-211l-2 154h184q119 0 175.5 41.5t56.5 118.5q0 81 -57 128.5t-176 47.5h-262z" />
+<glyph unicode="&#x506;" horiz-adv-x="1099" d="M80 1301v155h274q239 0 365 -106t126 -309q0 -112 -58.5 -195t-169.5 -131q119 -40 171.5 -128t52.5 -216v-136v-16h136v-173l-150 -306h-117l57 260h-61q-41 35 -51.5 100.5t-10.5 136.5v132q0 118 -68.5 190.5t-184.5 72.5h-220v154h162q167 0 241.5 63.5t74.5 193.5 q0 122 -71.5 190t-223.5 68h-274z" />
+<glyph unicode="&#x507;" horiz-adv-x="1033" d="M123 929v153h280q205 0 317.5 -84.5t112.5 -237.5q0 -81 -48.5 -139t-142.5 -94q102 -29 146.5 -95t44.5 -163v-70h128v-173l-150 -306h-117l62 280h-63q-37 23 -47 72.5t-10 100.5v95q0 80 -53 125.5t-151 45.5h-239v154h210q120 0 176 41.5t56 119.5q0 81 -56.5 128 t-175.5 47h-280z" />
+<glyph unicode="&#x508;" horiz-adv-x="1986" d="M69 0v154h41q149 0 215.5 144t66.5 470v688h865v-1111q-1 -95 44.5 -153.5t122.5 -58.5q135 1 208.5 106t77.5 290q1 97 -14.5 198.5t-45.5 203.5l190 1q33 -122 51 -216.5t16 -186.5q-4 -266 -142 -408t-341 -142q-170 -3 -263 85.5t-101 280.5v956h-472v-533 q0 -398 -108 -583t-358 -185h-53z" />
+<glyph unicode="&#x509;" horiz-adv-x="1654" d="M65 0l4 168l41 1q107 0 153 106t46 347v460h701v-737q-1 -95 44 -153.5t121 -58.5q107 1 165 94.5t62 257.5q1 92 -15 188t-46 193h191q33 -120 51 -207.5t16 -173.5q-4 -244 -125.5 -375t-298.5 -131q-168 -3 -261 85.5t-101 280.5v581h-307v-304q0 -317 -89 -469.5 t-295 -152.5h-57z" />
+<glyph unicode="&#x50a;" horiz-adv-x="2051" d="M169 0v1456h197v-658h703v658h197v-1111q-1 -95 44 -153.5t122 -58.5q135 1 209 106t78 290q1 97 -15 198t-46 204l190 1q34 -124 52 -217.5t16 -185.5q-5 -266 -143 -408t-341 -142q-169 -3 -262 85.5t-101 280.5v298h-703v-643h-197z" />
+<glyph unicode="&#x50b;" horiz-adv-x="1698" d="M143 0v1082h197v-469h492v469h197v-737q-1 -95 44.5 -153.5t121.5 -58.5q106 1 164.5 94.5t62.5 257.5q1 91 -14.5 187.5t-45.5 193.5h189q34 -123 52 -209t16 -172q-4 -244 -125 -375t-299 -131q-169 -3 -262 85.5t-101 280.5v115h-492v-460h-197z" />
+<glyph unicode="&#x50c;" horiz-adv-x="1271" d="M118 597v262q0 267 161.5 442.5t417.5 175.5q113 0 202 -22.5t157 -65.5l-63 -135q-67 33 -139 50.5t-157 17.5q-175 0 -278.5 -133t-103.5 -328v-264q0 -198 103.5 -331t278.5 -133q136 1 210 78t78 214q1 83 -12.5 173.5t-37.5 187.5h190q42 -197 50 -240t7 -121 q-4 -216 -142.5 -331t-342.5 -115q-256 0 -417.5 175t-161.5 443z" />
+<glyph unicode="&#x50d;" horiz-adv-x="1054" d="M98 520v42q0 226 127.5 383t346.5 157q94 0 165 -17.5t118 -48.5l-46 -147q-47 27 -108 42.5t-129 15.5q-137 0 -207 -115.5t-70 -269.5v-42q0 -158 74.5 -272.5t223.5 -114.5q95 1 134 42.5t42 125.5q0 58 -5 119t-14 117h189q13 -68 20 -125.5t7 -110.5 q-4 -158 -106 -240t-267 -82q-230 0 -362.5 157t-132.5 384z" />
+<glyph unicode="&#x50e;" horiz-adv-x="1454" d="M36 1301v155h1152v-155h-483v-956q-1 -95 44.5 -153.5t121.5 -58.5q135 1 209.5 106t78.5 290q1 96 -15 197t-47 205l191 1q34 -124 51.5 -217.5t15.5 -185.5q-4 -266 -142 -408t-342 -142q-169 -3 -262 85.5t-101 280.5v956h-472z" />
+<glyph unicode="&#x50f;" horiz-adv-x="1313" d="M70 929v153h907v-153h-356v-584q-1 -95 44 -153.5t122 -58.5q106 1 164.5 78.5t62.5 214.5q1 76 -15 159.5t-45 163.5h189q34 -103 52 -177t16 -146q-4 -216 -125.5 -331.5t-298.5 -115.5q-169 -3 -262 85.5t-101 280.5v584h-354z" />
+<glyph unicode="&#x510;" horiz-adv-x="1385" d="M156 406q0 126 71 212.5t206 128.5q-120 48 -187.5 131t-67.5 184q0 199 149 307t406 108q223 0 376 -110t148 -286l-1 -6h-188q0 105 -97.5 176t-237.5 71q-178 0 -268 -72t-90 -184q0 -114 83.5 -180t258.5 -66h184v-156h-184q-181 0 -272.5 -64.5t-91.5 -197.5 q0 -120 101 -194.5t279 -74.5q156 0 255.5 78.5t99.5 192.5h188l2 -6q4 -205 -158 -312t-387 -107q-258 0 -417.5 113.5t-159.5 313.5z" />
+<glyph unicode="&#x511;" horiz-adv-x="1103" d="M98 305q0 91 51.5 155t150.5 96q-87 35 -135 96t-48 134q0 150 116.5 232t317.5 82q183 0 307.5 -87.5t119.5 -226.5l-2 -6h-186q0 70 -69.5 119t-169.5 49q-116 0 -176.5 -47.5t-60.5 -114.5q0 -74 54.5 -116.5t169.5 -42.5h209v-150h-209q-121 0 -181.5 -42.5 t-60.5 -129.5q0 -73 68.5 -123t186.5 -50q112 0 184.5 56t72.5 132h186l2 -6q5 -162 -128 -247.5t-317 -85.5q-202 0 -327.5 86.5t-125.5 237.5z" />
+<glyph unicode="&#x512;" horiz-adv-x="1451" d="M49 0v154h41q138 0 199 142.5t62 473.5l1 686h919v-1456h-197v1301h-526l-1 -531q0 -400 -103 -585t-342 -185h-53zM1031 -419l14 160q14 -5 46 -8.5t51 -3.5q60 0 94 47t34 135v243h197v-243q0 -167 -86 -257.5t-239 -90.5q-31 0 -56.5 4.5t-54.5 13.5z" />
+<glyph unicode="&#x513;" horiz-adv-x="1133" d="M26 0l4 168l41 1q105 0 146.5 102.5t41.5 348.5v462h761v-1082h-197v926h-366v-306q0 -320 -85 -470t-290 -150h-56zM780 -419l14 160q14 -5 46 -8.5t51 -3.5q60 0 94 47t34 135v243h197v-243q0 -167 -86 -257.5t-239 -90.5q-31 0 -56.5 4.5t-54.5 13.5z" />
+<glyph unicode="&#x1e00;" horiz-adv-x="1326" d="M20 0l563 1456h169l554 -1456h-201l-136 375h-610l-138 -375h-201zM420 540h490l-240 663h-6zM523 -234q0 65 45.5 107.5t111.5 42.5q63 0 108 -42.5t45 -107.5q0 -63 -44.5 -104t-108.5 -41q-66 0 -111.5 41t-45.5 104zM612 -234q0 -26 20 -45t48 -19q26 0 45 18.5 t19 45.5q0 30 -19 49.5t-45 19.5q-28 0 -48 -20t-20 -49z" />
+<glyph unicode="&#x1e01;" horiz-adv-x="1126" d="M106 304q0 155 125.5 242.5t340.5 87.5h214v107q0 95 -58 150.5t-164 55.5q-95 0 -154.5 -48.5t-59.5 -116.5h-188l-2 6q-6 118 111.5 216t303.5 98q184 0 296 -93.5t112 -269.5v-521q0 -58 6 -112t22 -106h-203q-10 49 -15.5 86.5t-6.5 75.5q-55 -78 -143.5 -130.5 t-190.5 -52.5q-169 0 -257.5 86.5t-88.5 238.5zM303 300q0 -72 45 -114t133 -42q107 0 193 55t112 126v176h-221q-119 0 -190.5 -60t-71.5 -141zM338 -234q0 65 45.5 107.5t111.5 42.5q63 0 108 -42.5t45 -107.5q0 -63 -44.5 -104t-108.5 -41q-66 0 -111.5 41t-45.5 104z M427 -234q0 -26 20 -45t48 -19q26 0 45 18.5t19 45.5q0 30 -19 49.5t-45 19.5q-28 0 -48 -20t-20 -49z" />
+<glyph unicode="&#x1e3e;" horiz-adv-x="1799" d="M180 0v1456h252l464 -1183h6l464 1183h252v-1456h-197v576l20 592l-5 1l-472 -1169h-131l-470 1166l-5 -1l19 -589v-576h-197zM809 1556l185 266h230l2 -6l-270 -260h-147z" />
+<glyph unicode="&#x1e3f;" horiz-adv-x="1790" d="M143 0v1082h176l14 -142q53 77 134.5 119.5t189.5 42.5t185.5 -50t116.5 -150q51 92 135 146t196 54q165 0 261 -113.5t96 -341.5v-647h-197v649q0 160 -55 226.5t-164 66.5q-101 0 -163.5 -70t-73.5 -177v-8v-687h-198v649q0 152 -56.5 222.5t-162.5 70.5 q-90 0 -148 -37t-89 -104v-801h-197zM826 1234l185 266h230l2 -6l-270 -260h-147z" />
+<glyph unicode="&#x1e80;" horiz-adv-x="1809" d="M54 1456h196l222 -952l27 -182l6 -1l39 183l267 952h174l269 -952l40 -187h6l29 187l217 952h197l-351 -1456h-176l-287 1010l-26 131h-6l-25 -131l-292 -1010h-176zM573 1820l3 6h230l175 -266h-158z" />
+<glyph unicode="&#x1e81;" horiz-adv-x="1550" d="M45 1082h196l179 -688l23 -131h6l28 131l216 688h158l217 -688l31 -146h6l29 146l170 688h196l-314 -1082h-159l-209 659l-45 184l-6 -1l-43 -183l-206 -659h-159zM448 1477l3 6h230l175 -266h-158z" />
+<glyph unicode="&#x1e82;" horiz-adv-x="1809" d="M54 1456h196l222 -952l27 -182l6 -1l39 183l267 952h174l269 -952l40 -187h6l29 187l217 952h197l-351 -1456h-176l-287 1010l-26 131h-6l-25 -131l-292 -1010h-176zM808 1556l185 266h230l2 -6l-270 -260h-147z" />
+<glyph unicode="&#x1e83;" horiz-adv-x="1550" d="M45 1082h196l179 -688l23 -131h6l28 131l216 688h158l217 -688l31 -146h6l29 146l170 688h196l-314 -1082h-159l-209 659l-45 184l-6 -1l-43 -183l-206 -659h-159zM683 1213l185 266h230l2 -6l-270 -260h-147z" />
+<glyph unicode="&#x1e84;" horiz-adv-x="1809" d="M54 1456h196l222 -952l27 -182l6 -1l39 183l267 952h174l269 -952l40 -187h6l29 187l217 952h197l-351 -1456h-176l-287 1010l-26 131h-6l-25 -131l-292 -1010h-176zM554 1605v200h219v-200h-219zM1024 1605v200h219v-200h-219z" />
+<glyph unicode="&#x1e85;" horiz-adv-x="1550" d="M45 1082h196l179 -688l23 -131h6l28 131l216 688h158l217 -688l31 -146h6l29 146l170 688h196l-314 -1082h-159l-209 659l-45 184l-6 -1l-43 -183l-206 -659h-159zM429 1262v200h219v-200h-219zM899 1262v200h219v-200h-219z" />
+<glyph unicode="&#x1ea0;" horiz-adv-x="1326" d="M20 0l563 1456h169l554 -1456h-201l-136 375h-610l-138 -375h-201zM420 540h490l-240 663h-6zM554 -137h218v-200h-218v200z" />
+<glyph unicode="&#x1ea1;" horiz-adv-x="1126" d="M106 304q0 155 125.5 242.5t340.5 87.5h214v107q0 95 -58 150.5t-164 55.5q-95 0 -154.5 -48.5t-59.5 -116.5h-188l-2 6q-6 118 111.5 216t303.5 98q184 0 296 -93.5t112 -269.5v-521q0 -58 6 -112t22 -106h-203q-10 49 -15.5 86.5t-6.5 75.5q-55 -78 -143.5 -130.5 t-190.5 -52.5q-169 0 -257.5 86.5t-88.5 238.5zM303 300q0 -72 45 -114t133 -42q107 0 193 55t112 126v176h-221q-119 0 -190.5 -60t-71.5 -141zM398 -137h218v-200h-218v200z" />
+<glyph unicode="&#x1ea2;" horiz-adv-x="1326" d="M20 0l563 1456h169l554 -1456h-201l-136 375h-610l-138 -375h-201zM420 540h490l-240 663h-6zM579 1884l7 108q147 0 226 -51.5t79 -137.5q0 -70 -43 -106.5t-108 -45.5l-1 -71h-140l-1 154q76 4 108.5 20t32.5 53q0 39 -43.5 58t-116.5 19z" />
+<glyph unicode="&#x1ea3;" horiz-adv-x="1126" d="M106 304q0 155 125.5 242.5t340.5 87.5h214v107q0 95 -58 150.5t-164 55.5q-95 0 -154.5 -48.5t-59.5 -116.5h-188l-2 6q-6 118 111.5 216t303.5 98q184 0 296 -93.5t112 -269.5v-521q0 -58 6 -112t22 -106h-203q-10 49 -15.5 86.5t-6.5 75.5q-55 -78 -143.5 -130.5 t-190.5 -52.5q-169 0 -257.5 86.5t-88.5 238.5zM303 300q0 -72 45 -114t133 -42q107 0 193 55t112 126v176h-221q-119 0 -190.5 -60t-71.5 -141zM469 1562l7 108q147 0 226 -51.5t79 -137.5q0 -70 -43 -106.5t-108 -45.5l-1 -71h-140l-1 154q76 4 108.5 20t32.5 53 q0 39 -43.5 58t-116.5 19z" />
+<glyph unicode="&#x1ea4;" horiz-adv-x="1326" d="M20 0l563 1456h169l554 -1456h-201l-136 375h-610l-138 -375h-201zM299 1603l289 257h158l288 -257l-2 -6h-198l-167 157l-167 -157h-199zM420 540h490l-240 663h-6zM965 1773l140 260h211l-204 -260h-147z" />
+<glyph unicode="&#x1ea5;" horiz-adv-x="1126" d="M106 304q0 155 125.5 242.5t340.5 87.5h214v107q0 95 -58 150.5t-164 55.5q-95 0 -154.5 -48.5t-59.5 -116.5h-188l-2 6q-6 118 111.5 216t303.5 98q184 0 296 -93.5t112 -269.5v-521q0 -58 6 -112t22 -106h-203q-10 49 -15.5 86.5t-6.5 75.5q-55 -78 -143.5 -130.5 t-190.5 -52.5q-169 0 -257.5 86.5t-88.5 238.5zM181 1281l289 257h158l288 -257l-2 -6h-198l-167 157l-167 -157h-199zM303 300q0 -72 45 -114t133 -42q107 0 193 55t112 126v176h-221q-119 0 -190.5 -60t-71.5 -141zM847 1451l140 260h211l-204 -260h-147z" />
+<glyph unicode="&#x1ea6;" horiz-adv-x="1326" d="M20 0l563 1456h169l554 -1456h-201l-136 375h-610l-138 -375h-201zM25 2016h210l140 -260h-147zM306 1586l288 257h158l289 -257l-2 -6h-199l-167 157l-167 -157h-198zM420 540h490l-240 663h-6z" />
+<glyph unicode="&#x1ea7;" horiz-adv-x="1126" d="M-93 1694h210l140 -260h-147zM106 304q0 155 125.5 242.5t340.5 87.5h214v107q0 95 -58 150.5t-164 55.5q-95 0 -154.5 -48.5t-59.5 -116.5h-188l-2 6q-6 118 111.5 216t303.5 98q184 0 296 -93.5t112 -269.5v-521q0 -58 6 -112t22 -106h-203q-10 49 -15.5 86.5 t-6.5 75.5q-55 -78 -143.5 -130.5t-190.5 -52.5q-169 0 -257.5 86.5t-88.5 238.5zM188 1264l288 257h158l289 -257l-2 -6h-199l-167 157l-167 -157h-198zM303 300q0 -72 45 -114t133 -42q107 0 193 55t112 126v176h-221q-119 0 -190.5 -60t-71.5 -141z" />
+<glyph unicode="&#x1ea8;" horiz-adv-x="1326" d="M20 0l563 1456h169l554 -1456h-201l-136 375h-610l-138 -375h-201zM298 1566l268 257h198l269 -257l-2 -6h-170l-196 186l-196 -186h-169zM420 540h490l-240 663h-6zM991 1959l6 94q127 0 195.5 -43.5t68.5 -118.5q0 -61 -37.5 -93t-94.5 -39l-1 -61h-120l-1 133 q66 4 93.5 17t27.5 45q0 34 -37.5 50t-99.5 16z" />
+<glyph unicode="&#x1ea9;" horiz-adv-x="1126" d="M106 304q0 155 125.5 242.5t340.5 87.5h214v107q0 95 -58 150.5t-164 55.5q-95 0 -154.5 -48.5t-59.5 -116.5h-188l-2 6q-6 118 111.5 216t303.5 98q184 0 296 -93.5t112 -269.5v-521q0 -58 6 -112t22 -106h-203q-10 49 -15.5 86.5t-6.5 75.5q-55 -78 -143.5 -130.5 t-190.5 -52.5q-169 0 -257.5 86.5t-88.5 238.5zM180 1246l268 257h198l269 -257l-2 -6h-170l-196 186l-196 -186h-169zM303 300q0 -72 45 -114t133 -42q107 0 193 55t112 126v176h-221q-119 0 -190.5 -60t-71.5 -141zM873 1639l6 94q127 0 195.5 -43.5t68.5 -118.5 q0 -61 -37.5 -93t-94.5 -39l-1 -61h-120l-1 133q66 4 93.5 17t27.5 45q0 34 -37.5 50t-99.5 16z" />
+<glyph unicode="&#x1eaa;" horiz-adv-x="1326" d="M20 0l563 1456h169l554 -1456h-201l-136 375h-610l-138 -375h-201zM296 1568l289 257h157l289 -257l-2 -6h-170l-196 176l-196 -176h-169zM395 1896q0 69 48 124.5t114 55.5q42 0 103.5 -34.5t100.5 -34.5q30 0 57 28t27 63l79 -23q0 -69 -48.5 -122.5t-114.5 -53.5 q-53 0 -109.5 35.5t-94.5 35.5q-31 0 -56.5 -29.5t-25.5 -63.5zM420 540h490l-240 663h-6z" />
+<glyph unicode="&#x1eab;" horiz-adv-x="1126" d="M106 304q0 155 125.5 242.5t340.5 87.5h214v107q0 95 -58 150.5t-164 55.5q-95 0 -154.5 -48.5t-59.5 -116.5h-188l-2 6q-6 118 111.5 216t303.5 98q184 0 296 -93.5t112 -269.5v-521q0 -58 6 -112t22 -106h-203q-10 49 -15.5 86.5t-6.5 75.5q-55 -78 -143.5 -130.5 t-190.5 -52.5q-169 0 -257.5 86.5t-88.5 238.5zM184 1248l289 257h157l289 -257l-2 -6h-170l-196 176l-196 -176h-169zM283 1576q0 69 48 124.5t114 55.5q42 0 103.5 -34.5t100.5 -34.5q30 0 57 28t27 63l79 -23q0 -69 -48.5 -122.5t-114.5 -53.5q-53 0 -109.5 35.5 t-94.5 35.5q-31 0 -56.5 -29.5t-25.5 -63.5zM303 300q0 -72 45 -114t133 -42q107 0 193 55t112 126v176h-221q-119 0 -190.5 -60t-71.5 -141z" />
+<glyph unicode="&#x1eac;" horiz-adv-x="1326" d="M20 0l563 1456h169l554 -1456h-201l-136 375h-610l-138 -375h-201zM356 1601v26l246 237h120l248 -238v-25h-161l-147 148l-146 -148h-160zM420 540h490l-240 663h-6zM554 -137h218v-200h-218v200z" />
+<glyph unicode="&#x1ead;" horiz-adv-x="1126" d="M106 304q0 155 125.5 242.5t340.5 87.5h214v107q0 95 -58 150.5t-164 55.5q-95 0 -154.5 -48.5t-59.5 -116.5h-188l-2 6q-6 118 111.5 216t303.5 98q184 0 296 -93.5t112 -269.5v-521q0 -58 6 -112t22 -106h-203q-10 49 -15.5 86.5t-6.5 75.5q-55 -78 -143.5 -130.5 t-190.5 -52.5q-169 0 -257.5 86.5t-88.5 238.5zM249 1279v26l246 237h120l248 -238v-25h-161l-147 148l-146 -148h-160zM303 300q0 -72 45 -114t133 -42q107 0 193 55t112 126v176h-221q-119 0 -190.5 -60t-71.5 -141zM398 -137h218v-200h-218v200z" />
+<glyph unicode="&#x1eae;" horiz-adv-x="1326" d="M20 0l563 1456h169l554 -1456h-201l-136 375h-610l-138 -375h-201zM367 1790l2 6h151q0 -51 34.5 -82.5t109.5 -31.5q73 0 108 31.5t35 82.5h152l2 -6q6 -89 -76 -146t-221 -57q-140 0 -222 57t-75 146zM420 540h490l-240 663h-6zM606 1818l108 197h155l2 -5l-159 -192 h-106z" />
+<glyph unicode="&#x1eaf;" horiz-adv-x="1126" d="M106 304q0 155 125.5 242.5t340.5 87.5h214v107q0 95 -58 150.5t-164 55.5q-95 0 -154.5 -48.5t-59.5 -116.5h-188l-2 6q-6 118 111.5 216t303.5 98q184 0 296 -93.5t112 -269.5v-521q0 -58 6 -112t22 -106h-203q-10 49 -15.5 86.5t-6.5 75.5q-55 -78 -143.5 -130.5 t-190.5 -52.5q-169 0 -257.5 86.5t-88.5 238.5zM253 1468l2 6h151q0 -51 34.5 -82.5t109.5 -31.5q73 0 108 31.5t35 82.5h152l2 -6q6 -89 -76 -146t-221 -57q-140 0 -222 57t-75 146zM303 300q0 -72 45 -114t133 -42q107 0 193 55t112 126v176h-221q-119 0 -190.5 -60 t-71.5 -141zM492 1496l108 197h155l2 -5l-159 -192h-106z" />
+<glyph unicode="&#x1eb0;" horiz-adv-x="1326" d="M20 0l563 1456h169l554 -1456h-201l-136 375h-610l-138 -375h-201zM367 1790l2 6h151q0 -51 34.5 -82.5t109.5 -31.5q73 0 108 31.5t35 82.5h152l2 -6q6 -89 -76 -146t-221 -57q-140 0 -222 57t-75 146zM411 2009l2 6h179l138 -197h-119zM420 540h490l-240 663h-6z" />
+<glyph unicode="&#x1eb1;" horiz-adv-x="1126" d="M106 304q0 155 125.5 242.5t340.5 87.5h214v107q0 95 -58 150.5t-164 55.5q-95 0 -154.5 -48.5t-59.5 -116.5h-188l-2 6q-6 118 111.5 216t303.5 98q184 0 296 -93.5t112 -269.5v-521q0 -58 6 -112t22 -106h-203q-10 49 -15.5 86.5t-6.5 75.5q-55 -78 -143.5 -130.5 t-190.5 -52.5q-169 0 -257.5 86.5t-88.5 238.5zM253 1468l2 6h151q0 -51 34.5 -82.5t109.5 -31.5q73 0 108 31.5t35 82.5h152l2 -6q6 -89 -76 -146t-221 -57q-140 0 -222 57t-75 146zM297 1687l2 6h179l138 -197h-119zM303 300q0 -72 45 -114t133 -42q107 0 193 55t112 126 v176h-221q-119 0 -190.5 -60t-71.5 -141z" />
+<glyph unicode="&#x1eb2;" horiz-adv-x="1326" d="M20 0l563 1456h169l554 -1456h-201l-136 375h-610l-138 -375h-201zM378 1783l2 6h144q0 -50 34 -82t106 -32q71 0 105 31.5t34 82.5h145l2 -6q6 -89 -73 -145.5t-213 -56.5q-135 0 -214 56.5t-72 145.5zM420 540h490l-240 663h-6zM596 2084l7 83q142 0 218 -39t76 -105 q0 -53 -41.5 -80.5t-104.5 -34.5l-1 -63h-135l-1 126q73 3 103 14.5t25 37.5v6q5 28 -35.5 41.5t-110.5 13.5z" />
+<glyph unicode="&#x1eb3;" horiz-adv-x="1126" d="M106 304q0 155 125.5 242.5t340.5 87.5h214v107q0 95 -58 150.5t-164 55.5q-95 0 -154.5 -48.5t-59.5 -116.5h-188l-2 6q-6 118 111.5 216t303.5 98q184 0 296 -93.5t112 -269.5v-521q0 -58 6 -112t22 -106h-203q-10 49 -15.5 86.5t-6.5 75.5q-55 -78 -143.5 -130.5 t-190.5 -52.5q-169 0 -257.5 86.5t-88.5 238.5zM257 1457l2 6h144q0 -50 34 -82t106 -32q71 0 105 31.5t34 82.5h145l2 -6q6 -89 -73 -145.5t-213 -56.5q-135 0 -214 56.5t-72 145.5zM303 300q0 -72 45 -114t133 -42q107 0 193 55t112 126v176h-221q-119 0 -190.5 -60 t-71.5 -141zM475 1758l7 83q142 0 218 -39t76 -105q0 -53 -41.5 -80.5t-104.5 -34.5l-1 -63h-135l-1 126q73 3 103 14.5t25 37.5v6q5 28 -35.5 41.5t-110.5 13.5z" />
+<glyph unicode="&#x1eb4;" horiz-adv-x="1326" d="M20 0l563 1456h169l554 -1456h-201l-136 375h-610l-138 -375h-201zM373 1787l2 6h148q0 -52 33.5 -84.5t107.5 -32.5q71 0 105.5 32.5t34.5 84.5h148l2 -6q6 -91 -74 -149t-216 -58q-137 0 -217.5 58t-73.5 149zM396 1887q0 74 47 129.5t120 55.5q45 0 112.5 -38 t110.5 -38q32 0 56 25.5t24 63.5l86 -24q0 -75 -47.5 -128.5t-118.5 -53.5q-58 0 -120 38t-103 38q-34 0 -56.5 -26t-22.5 -63zM420 540h490l-240 663h-6z" />
+<glyph unicode="&#x1eb5;" horiz-adv-x="1126" d="M106 304q0 155 125.5 242.5t340.5 87.5h214v107q0 95 -58 150.5t-164 55.5q-95 0 -154.5 -48.5t-59.5 -116.5h-188l-2 6q-6 118 111.5 216t303.5 98q184 0 296 -93.5t112 -269.5v-521q0 -58 6 -112t22 -106h-203q-10 49 -15.5 86.5t-6.5 75.5q-55 -78 -143.5 -130.5 t-190.5 -52.5q-169 0 -257.5 86.5t-88.5 238.5zM257 1465l2 6h148q0 -52 33.5 -84.5t107.5 -32.5q71 0 105.5 32.5t34.5 84.5h148l2 -6q6 -91 -74 -149t-216 -58q-137 0 -217.5 58t-73.5 149zM280 1565q0 74 47 129.5t120 55.5q45 0 112.5 -38t110.5 -38q32 0 56 25.5 t24 63.5l86 -24q0 -75 -47.5 -128.5t-118.5 -53.5q-58 0 -120 38t-103 38q-34 0 -56.5 -26t-22.5 -63zM303 300q0 -72 45 -114t133 -42q107 0 193 55t112 126v176h-221q-119 0 -190.5 -60t-71.5 -141z" />
+<glyph unicode="&#x1eb6;" horiz-adv-x="1326" d="M20 0l563 1456h169l554 -1456h-201l-136 375h-610l-138 -375h-201zM369 1864l2 6h151q0 -66 34 -107t108 -41q72 0 107 41.5t35 106.5h151l2 -6q4 -116 -77 -189t-218 -73q-138 0 -219 73t-76 189zM420 540h490l-240 663h-6zM554 -137h218v-200h-218v200z" />
+<glyph unicode="&#x1eb7;" horiz-adv-x="1126" d="M106 304q0 155 125.5 242.5t340.5 87.5h214v107q0 95 -58 150.5t-164 55.5q-95 0 -154.5 -48.5t-59.5 -116.5h-188l-2 6q-6 118 111.5 216t303.5 98q184 0 296 -93.5t112 -269.5v-521q0 -58 6 -112t22 -106h-203q-10 49 -15.5 86.5t-6.5 75.5q-55 -78 -143.5 -130.5 t-190.5 -52.5q-169 0 -257.5 86.5t-88.5 238.5zM261 1542l2 6h151q0 -66 34 -107t108 -41q72 0 107 41.5t35 106.5h151l2 -6q4 -116 -77 -189t-218 -73q-138 0 -219 73t-76 189zM303 300q0 -72 45 -114t133 -42q107 0 193 55t112 126v176h-221q-119 0 -190.5 -60t-71.5 -141 zM398 -137h218v-200h-218v200z" />
+<glyph unicode="&#x1eb8;" horiz-adv-x="1197" d="M180 0v1456h955v-155h-758v-471h667v-155h-667v-521h769v-154h-966zM519 -127h218v-200h-218v200z" />
+<glyph unicode="&#x1eb9;" horiz-adv-x="1083" d="M99 520v44q0 231 137.5 384.5t325.5 153.5q219 0 331 -132t112 -352v-123h-702l-3 -5q3 -156 79 -256.5t213 -100.5q100 0 175.5 28.5t130.5 78.5l77 -128q-58 -57 -153 -95t-230 -38q-226 0 -359.5 150.5t-133.5 390.5zM307 654l2 -5h499v26q0 116 -62 194t-184 78 q-99 0 -169 -83.5t-86 -209.5zM464 -137h218v-200h-218v200z" />
+<glyph unicode="&#x1eba;" horiz-adv-x="1197" d="M180 0v1456h955v-155h-758v-471h667v-155h-667v-521h769v-154h-966zM542 1884l7 108q147 0 226 -51.5t79 -137.5q0 -70 -43 -106.5t-108 -45.5l-1 -71h-140l-1 154q76 4 108.5 20t32.5 53q0 39 -43.5 58t-116.5 19z" />
+<glyph unicode="&#x1ebb;" horiz-adv-x="1083" d="M99 520v44q0 231 137.5 384.5t325.5 153.5q219 0 331 -132t112 -352v-123h-702l-3 -5q3 -156 79 -256.5t213 -100.5q100 0 175.5 28.5t130.5 78.5l77 -128q-58 -57 -153 -95t-230 -38q-226 0 -359.5 150.5t-133.5 390.5zM307 654l2 -5h499v26q0 116 -62 194t-184 78 q-99 0 -169 -83.5t-86 -209.5zM472 1563l7 108q147 0 226 -51.5t79 -137.5q0 -70 -43 -106.5t-108 -45.5l-1 -71h-140l-1 154q76 4 108.5 20t32.5 53q0 39 -43.5 58t-116.5 19z" />
+<glyph unicode="&#x1ebc;" horiz-adv-x="1197" d="M180 0v1456h955v-155h-758v-471h667v-155h-667v-521h769v-154h-966zM281 1628q0 93 59 161.5t150 68.5q56 0 140 -47t136 -47q41 0 71 32.5t30 79.5l108 -32q0 -94 -59.5 -159t-149.5 -65q-71 0 -148 46.5t-128 46.5q-43 0 -72 -32.5t-29 -78.5z" />
+<glyph unicode="&#x1ebd;" horiz-adv-x="1083" d="M99 520v44q0 231 137.5 384.5t325.5 153.5q219 0 331 -132t112 -352v-123h-702l-3 -5q3 -156 79 -256.5t213 -100.5q100 0 175.5 28.5t130.5 78.5l77 -128q-58 -57 -153 -95t-230 -38q-226 0 -359.5 150.5t-133.5 390.5zM211 1307q0 93 59 161.5t150 68.5q56 0 140 -47 t136 -47q41 0 71 32.5t30 79.5l108 -32q0 -94 -59.5 -159t-149.5 -65q-71 0 -148 46.5t-128 46.5q-43 0 -72 -32.5t-29 -78.5zM307 654l2 -5h499v26q0 116 -62 194t-184 78q-99 0 -169 -83.5t-86 -209.5z" />
+<glyph unicode="&#x1ebe;" horiz-adv-x="1197" d="M180 0v1456h955v-155h-758v-471h667v-155h-667v-521h769v-154h-966zM254 1603l289 257h158l288 -257l-2 -6h-198l-167 157l-167 -157h-199zM920 1773l140 260h211l-204 -260h-147z" />
+<glyph unicode="&#x1ebf;" horiz-adv-x="1083" d="M99 520v44q0 231 137.5 384.5t325.5 153.5q219 0 331 -132t112 -352v-123h-702l-3 -5q3 -156 79 -256.5t213 -100.5q100 0 175.5 28.5t130.5 78.5l77 -128q-58 -57 -153 -95t-230 -38q-226 0 -359.5 150.5t-133.5 390.5zM184 1282l289 257h158l288 -257l-2 -6h-198 l-167 157l-167 -157h-199zM307 654l2 -5h499v26q0 116 -62 194t-184 78q-99 0 -169 -83.5t-86 -209.5zM850 1452l140 260h211l-204 -260h-147z" />
+<glyph unicode="&#x1ec0;" horiz-adv-x="1197" d="M-20 2016h210l140 -260h-147zM180 0v1456h955v-155h-758v-471h667v-155h-667v-521h769v-154h-966zM261 1586l288 257h158l289 -257l-2 -6h-199l-167 157l-167 -157h-198z" />
+<glyph unicode="&#x1ec1;" horiz-adv-x="1083" d="M-90 1695h210l140 -260h-147zM99 520v44q0 231 137.5 384.5t325.5 153.5q219 0 331 -132t112 -352v-123h-702l-3 -5q3 -156 79 -256.5t213 -100.5q100 0 175.5 28.5t130.5 78.5l77 -128q-58 -57 -153 -95t-230 -38q-226 0 -359.5 150.5t-133.5 390.5zM191 1265l288 257 h158l289 -257l-2 -6h-199l-167 157l-167 -157h-198zM307 654l2 -5h499v26q0 116 -62 194t-184 78q-99 0 -169 -83.5t-86 -209.5z" />
+<glyph unicode="&#x1ec2;" horiz-adv-x="1197" d="M180 0v1456h955v-155h-758v-471h667v-155h-667v-521h769v-154h-966zM253 1566l268 257h198l269 -257l-2 -6h-170l-196 186l-196 -186h-169zM946 1959l6 94q127 0 195.5 -43.5t68.5 -118.5q0 -61 -37.5 -93t-94.5 -39l-1 -61h-120l-1 133q66 4 93.5 17t27.5 45 q0 34 -37.5 50t-99.5 16z" />
+<glyph unicode="&#x1ec3;" horiz-adv-x="1083" d="M99 520v44q0 231 137.5 384.5t325.5 153.5q219 0 331 -132t112 -352v-123h-702l-3 -5q3 -156 79 -256.5t213 -100.5q100 0 175.5 28.5t130.5 78.5l77 -128q-58 -57 -153 -95t-230 -38q-226 0 -359.5 150.5t-133.5 390.5zM183 1247l268 257h198l269 -257l-2 -6h-170 l-196 186l-196 -186h-169zM307 654l2 -5h499v26q0 116 -62 194t-184 78q-99 0 -169 -83.5t-86 -209.5zM876 1640l6 94q127 0 195.5 -43.5t68.5 -118.5q0 -61 -37.5 -93t-94.5 -39l-1 -61h-120l-1 133q66 4 93.5 17t27.5 45q0 34 -37.5 50t-99.5 16z" />
+<glyph unicode="&#x1ec4;" horiz-adv-x="1197" d="M180 0v1456h955v-155h-758v-471h667v-155h-667v-521h769v-154h-966zM257 1568l289 257h157l289 -257l-2 -6h-170l-196 176l-196 -176h-169zM356 1896q0 69 48 124.5t114 55.5q42 0 103.5 -34.5t100.5 -34.5q30 0 57 28t27 63l79 -23q0 -69 -48.5 -122.5t-114.5 -53.5 q-53 0 -109.5 35.5t-94.5 35.5q-31 0 -56.5 -29.5t-25.5 -63.5z" />
+<glyph unicode="&#x1ec5;" horiz-adv-x="1083" d="M99 520v44q0 231 137.5 384.5t325.5 153.5q219 0 331 -132t112 -352v-123h-702l-3 -5q3 -156 79 -256.5t213 -100.5q100 0 175.5 28.5t130.5 78.5l77 -128q-58 -57 -153 -95t-230 -38q-226 0 -359.5 150.5t-133.5 390.5zM187 1249l289 257h157l289 -257l-2 -6h-170 l-196 176l-196 -176h-169zM286 1577q0 69 48 124.5t114 55.5q42 0 103.5 -34.5t100.5 -34.5q30 0 57 28t27 63l79 -23q0 -69 -48.5 -122.5t-114.5 -53.5q-53 0 -109.5 35.5t-94.5 35.5q-31 0 -56.5 -29.5t-25.5 -63.5zM307 654l2 -5h499v26q0 116 -62 194t-184 78 q-99 0 -169 -83.5t-86 -209.5z" />
+<glyph unicode="&#x1ec6;" horiz-adv-x="1197" d="M180 0v1456h955v-155h-758v-471h667v-155h-667v-521h769v-154h-966zM322 1601v26l246 237h120l248 -238v-25h-161l-147 148l-146 -148h-160zM519 -127h218v-200h-218v200z" />
+<glyph unicode="&#x1ec7;" horiz-adv-x="1083" d="M99 520v44q0 231 137.5 384.5t325.5 153.5q219 0 331 -132t112 -352v-123h-702l-3 -5q3 -156 79 -256.5t213 -100.5q100 0 175.5 28.5t130.5 78.5l77 -128q-58 -57 -153 -95t-230 -38q-226 0 -359.5 150.5t-133.5 390.5zM252 1280v26l246 237h120l248 -238v-25h-161 l-147 148l-146 -148h-160zM307 654l2 -5h499v26q0 116 -62 194t-184 78q-99 0 -169 -83.5t-86 -209.5zM464 -137h218v-200h-218v200z" />
+<glyph unicode="&#x1ec8;" horiz-adv-x="579" d="M190 0v1456h198v-1456h-198zM203 1884l7 108q147 0 226 -51.5t79 -137.5q0 -70 -43 -106.5t-108 -45.5l-1 -71h-140l-1 154q76 4 108.5 20t32.5 53q0 39 -43.5 58t-116.5 19z" />
+<glyph unicode="&#x1ec9;" horiz-adv-x="515" d="M153 0v1082h197v-1082h-197zM166 1543l7 108q147 0 226 -51.5t79 -137.5q0 -70 -43 -106.5t-108 -45.5l-1 -71h-140l-1 154q76 4 108.5 20t32.5 53q0 39 -43.5 58t-116.5 19z" />
+<glyph unicode="&#x1eca;" horiz-adv-x="579" d="M180 -128h218v-200h-218v200zM190 0v1456h198v-1456h-198z" />
+<glyph unicode="&#x1ecb;" horiz-adv-x="516" d="M149 -127h218v-200h-218v200zM159 0v1082h197v-1082h-197zM159 1359v201h197v-201h-197z" />
+<glyph unicode="&#x1ecc;" horiz-adv-x="1396" d="M113 598v259q0 266 159.5 443t414.5 177q264 0 429.5 -176.5t165.5 -443.5v-259q0 -267 -165.5 -443t-429.5 -176q-255 0 -414.5 176t-159.5 443zM310 598q0 -202 102.5 -330t274.5 -128q183 0 290.5 127.5t107.5 330.5v261q0 200 -108 328t-290 128q-172 0 -274.5 -128 t-102.5 -328v-261zM589 -144h218v-200h-218v200z" />
+<glyph unicode="&#x1ecd;" d="M97 529v22q0 240 130 395.5t353 155.5q225 0 355.5 -155t130.5 -396v-22q0 -242 -130 -396t-354 -154t-354.5 154.5t-130.5 395.5zM294 529q0 -172 72.5 -284t215.5 -112q141 0 214 112t73 284v22q0 170 -73.5 283t-215.5 113q-141 0 -213.5 -113t-72.5 -283v-22z M473 -145h218v-200h-218v200z" />
+<glyph unicode="&#x1ece;" horiz-adv-x="1396" d="M113 598v259q0 266 159.5 443t414.5 177q264 0 429.5 -176.5t165.5 -443.5v-259q0 -267 -165.5 -443t-429.5 -176q-255 0 -414.5 176t-159.5 443zM310 598q0 -202 102.5 -330t274.5 -128q183 0 290.5 127.5t107.5 330.5v261q0 200 -108 328t-290 128q-172 0 -274.5 -128 t-102.5 -328v-261zM612 1905l7 108q147 0 226 -51.5t79 -137.5q0 -70 -43 -106.5t-108 -45.5l-1 -71h-140l-1 154q76 4 108.5 20t32.5 53q0 39 -43.5 58t-116.5 19z" />
+<glyph unicode="&#x1ecf;" d="M97 529v22q0 240 130 395.5t353 155.5q225 0 355.5 -155t130.5 -396v-22q0 -242 -130 -396t-354 -154t-354.5 154.5t-130.5 395.5zM294 529q0 -172 72.5 -284t215.5 -112q141 0 214 112t73 284v22q0 170 -73.5 283t-215.5 113q-141 0 -213.5 -113t-72.5 -283v-22z M496 1562l7 108q147 0 226 -51.5t79 -137.5q0 -70 -43 -106.5t-108 -45.5l-1 -71h-140l-1 154q76 4 108.5 20t32.5 53q0 39 -43.5 58t-116.5 19z" />
+<glyph unicode="&#x1ed0;" horiz-adv-x="1396" d="M113 598v259q0 266 159.5 443t414.5 177q264 0 429.5 -176.5t165.5 -443.5v-259q0 -267 -165.5 -443t-429.5 -176q-255 0 -414.5 176t-159.5 443zM310 598q0 -202 102.5 -330t274.5 -128q183 0 290.5 127.5t107.5 330.5v261q0 200 -108 328t-290 128q-172 0 -274.5 -128 t-102.5 -328v-261zM324 1624l289 257h158l288 -257l-2 -6h-198l-167 157l-167 -157h-199zM990 1794l140 260h211l-204 -260h-147z" />
+<glyph unicode="&#x1ed1;" d="M97 529v22q0 240 130 395.5t353 155.5q225 0 355.5 -155t130.5 -396v-22q0 -242 -130 -396t-354 -154t-354.5 154.5t-130.5 395.5zM208 1281l289 257h158l288 -257l-2 -6h-198l-167 157l-167 -157h-199zM294 529q0 -172 72.5 -284t215.5 -112q141 0 214 112t73 284v22 q0 170 -73.5 283t-215.5 113q-141 0 -213.5 -113t-72.5 -283v-22zM874 1451l140 260h211l-204 -260h-147z" />
+<glyph unicode="&#x1ed2;" horiz-adv-x="1396" d="M50 2037h210l140 -260h-147zM113 598v259q0 266 159.5 443t414.5 177q264 0 429.5 -176.5t165.5 -443.5v-259q0 -267 -165.5 -443t-429.5 -176q-255 0 -414.5 176t-159.5 443zM310 598q0 -202 102.5 -330t274.5 -128q183 0 290.5 127.5t107.5 330.5v261q0 200 -108 328 t-290 128q-172 0 -274.5 -128t-102.5 -328v-261zM331 1607l288 257h158l289 -257l-2 -6h-199l-167 157l-167 -157h-198z" />
+<glyph unicode="&#x1ed3;" d="M-66 1694h210l140 -260h-147zM97 529v22q0 240 130 395.5t353 155.5q225 0 355.5 -155t130.5 -396v-22q0 -242 -130 -396t-354 -154t-354.5 154.5t-130.5 395.5zM215 1264l288 257h158l289 -257l-2 -6h-199l-167 157l-167 -157h-198zM294 529q0 -172 72.5 -284 t215.5 -112q141 0 214 112t73 284v22q0 170 -73.5 283t-215.5 113q-141 0 -213.5 -113t-72.5 -283v-22z" />
+<glyph unicode="&#x1ed4;" horiz-adv-x="1396" d="M113 598v259q0 266 159.5 443t414.5 177q264 0 429.5 -176.5t165.5 -443.5v-259q0 -267 -165.5 -443t-429.5 -176q-255 0 -414.5 176t-159.5 443zM310 598q0 -202 102.5 -330t274.5 -128q183 0 290.5 127.5t107.5 330.5v261q0 200 -108 328t-290 128q-172 0 -274.5 -128 t-102.5 -328v-261zM323 1587l268 257h198l269 -257l-2 -6h-170l-196 186l-196 -186h-169zM1016 1980l6 94q127 0 195.5 -43.5t68.5 -118.5q0 -61 -37.5 -93t-94.5 -39l-1 -61h-120l-1 133q66 4 93.5 17t27.5 45q0 34 -37.5 50t-99.5 16z" />
+<glyph unicode="&#x1ed5;" d="M97 529v22q0 240 130 395.5t353 155.5q225 0 355.5 -155t130.5 -396v-22q0 -242 -130 -396t-354 -154t-354.5 154.5t-130.5 395.5zM207 1246l268 257h198l269 -257l-2 -6h-170l-196 186l-196 -186h-169zM294 529q0 -172 72.5 -284t215.5 -112q141 0 214 112t73 284v22 q0 170 -73.5 283t-215.5 113q-141 0 -213.5 -113t-72.5 -283v-22zM900 1639l6 94q127 0 195.5 -43.5t68.5 -118.5q0 -61 -37.5 -93t-94.5 -39l-1 -61h-120l-1 133q66 4 93.5 17t27.5 45q0 34 -37.5 50t-99.5 16z" />
+<glyph unicode="&#x1ed6;" horiz-adv-x="1396" d="M113 598v259q0 266 159.5 443t414.5 177q264 0 429.5 -176.5t165.5 -443.5v-259q0 -267 -165.5 -443t-429.5 -176q-255 0 -414.5 176t-159.5 443zM310 598q0 -202 102.5 -330t274.5 -128q183 0 290.5 127.5t107.5 330.5v261q0 200 -108 328t-290 128q-172 0 -274.5 -128 t-102.5 -328v-261zM327 1589l289 257h157l289 -257l-2 -6h-170l-196 176l-196 -176h-169zM426 1917q0 69 48 124.5t114 55.5q42 0 103.5 -34.5t100.5 -34.5q30 0 57 28t27 63l79 -23q0 -69 -48.5 -122.5t-114.5 -53.5q-53 0 -109.5 35.5t-94.5 35.5q-31 0 -56.5 -29.5 t-25.5 -63.5z" />
+<glyph unicode="&#x1ed7;" d="M97 529v22q0 240 130 395.5t353 155.5q225 0 355.5 -155t130.5 -396v-22q0 -242 -130 -396t-354 -154t-354.5 154.5t-130.5 395.5zM211 1248l289 257h157l289 -257l-2 -6h-170l-196 176l-196 -176h-169zM294 529q0 -172 72.5 -284t215.5 -112q141 0 214 112t73 284v22 q0 170 -73.5 283t-215.5 113q-141 0 -213.5 -113t-72.5 -283v-22zM310 1576q0 69 48 124.5t114 55.5q42 0 103.5 -34.5t100.5 -34.5q30 0 57 28t27 63l79 -23q0 -69 -48.5 -122.5t-114.5 -53.5q-53 0 -109.5 35.5t-94.5 35.5q-31 0 -56.5 -29.5t-25.5 -63.5z" />
+<glyph unicode="&#x1ed8;" horiz-adv-x="1396" d="M113 598v259q0 266 159.5 443t414.5 177q264 0 429.5 -176.5t165.5 -443.5v-259q0 -267 -165.5 -443t-429.5 -176q-255 0 -414.5 176t-159.5 443zM310 598q0 -202 102.5 -330t274.5 -128q183 0 290.5 127.5t107.5 330.5v261q0 200 -108 328t-290 128q-172 0 -274.5 -128 t-102.5 -328v-261zM392 1622v26l246 237h120l248 -238v-25h-161l-147 148l-146 -148h-160zM589 -144h218v-200h-218v200z" />
+<glyph unicode="&#x1ed9;" d="M97 529v22q0 240 130 395.5t353 155.5q225 0 355.5 -155t130.5 -396v-22q0 -242 -130 -396t-354 -154t-354.5 154.5t-130.5 395.5zM276 1279v26l246 237h120l248 -238v-25h-161l-147 148l-146 -148h-160zM294 529q0 -172 72.5 -284t215.5 -112q141 0 214 112t73 284v22 q0 170 -73.5 283t-215.5 113q-141 0 -213.5 -113t-72.5 -283v-22zM473 -145h218v-200h-218v200z" />
+<glyph unicode="&#x1eda;" horiz-adv-x="1403" d="M108 598v259q0 266 159.5 443t414.5 177q120 0 223 -40t182 -113q123 11 187 96.5t64 232.5h197q0 -192 -88 -313.5t-250 -157.5q38 -71 59 -154t21 -171v-259q0 -267 -165.5 -443t-429.5 -176q-255 0 -414.5 176t-159.5 443zM305 598q0 -202 102.5 -330t274.5 -128 q183 0 290.5 127.5t107.5 330.5v261q0 200 -108 328t-290 128q-172 0 -274.5 -128t-102.5 -328v-261zM611 1538l185 266h230l2 -6l-270 -260h-147z" />
+<glyph unicode="&#x1edb;" horiz-adv-x="1175" d="M97 529v22q0 240 130 395.5t353 155.5q102 0 187 -35t149 -98q82 18 122 84t40 170h178q0 -143 -66.5 -237t-195.5 -126q35 -66 53.5 -144.5t18.5 -164.5v-22q0 -242 -130 -396t-354 -154t-354.5 154.5t-130.5 395.5zM294 529q0 -172 72.5 -284t215.5 -112q141 0 214 112 t73 284v22q0 170 -73.5 283t-215.5 113q-141 0 -213.5 -113t-72.5 -283v-22zM492 1234l185 266h230l2 -6l-270 -260h-147z" />
+<glyph unicode="&#x1edc;" horiz-adv-x="1403" d="M108 598v259q0 266 159.5 443t414.5 177q120 0 223 -40t182 -113q123 11 187 96.5t64 232.5h197q0 -192 -88 -313.5t-250 -157.5q38 -71 59 -154t21 -171v-259q0 -267 -165.5 -443t-429.5 -176q-255 0 -414.5 176t-159.5 443zM305 598q0 -202 102.5 -330t274.5 -128 q183 0 290.5 127.5t107.5 330.5v261q0 200 -108 328t-290 128q-172 0 -274.5 -128t-102.5 -328v-261zM376 1802l3 6h230l175 -266h-158z" />
+<glyph unicode="&#x1edd;" horiz-adv-x="1175" d="M97 529v22q0 240 130 395.5t353 155.5q102 0 187 -35t149 -98q82 18 122 84t40 170h178q0 -143 -66.5 -237t-195.5 -126q35 -66 53.5 -144.5t18.5 -164.5v-22q0 -242 -130 -396t-354 -154t-354.5 154.5t-130.5 395.5zM257 1498l3 6h230l175 -266h-158zM294 529 q0 -172 72.5 -284t215.5 -112q141 0 214 112t73 284v22q0 170 -73.5 283t-215.5 113q-141 0 -213.5 -113t-72.5 -283v-22z" />
+<glyph unicode="&#x1ede;" horiz-adv-x="1403" d="M108 598v259q0 266 159.5 443t414.5 177q120 0 223 -40t182 -113q123 11 187 96.5t64 232.5h197q0 -192 -88 -313.5t-250 -157.5q38 -71 59 -154t21 -171v-259q0 -267 -165.5 -443t-429.5 -176q-255 0 -414.5 176t-159.5 443zM305 598q0 -202 102.5 -330t274.5 -128 q183 0 290.5 127.5t107.5 330.5v261q0 200 -108 328t-290 128q-172 0 -274.5 -128t-102.5 -328v-261zM615 1905l7 108q147 0 226 -51.5t79 -137.5q0 -70 -43 -106.5t-108 -45.5l-1 -71h-140l-1 154q76 4 108.5 20t32.5 53q0 39 -43.5 58t-116.5 19z" />
+<glyph unicode="&#x1edf;" horiz-adv-x="1175" d="M97 529v22q0 240 130 395.5t353 155.5q102 0 187 -35t149 -98q82 18 122 84t40 170h178q0 -143 -66.5 -237t-195.5 -126q35 -66 53.5 -144.5t18.5 -164.5v-22q0 -242 -130 -396t-354 -154t-354.5 154.5t-130.5 395.5zM294 529q0 -172 72.5 -284t215.5 -112q141 0 214 112 t73 284v22q0 170 -73.5 283t-215.5 113q-141 0 -213.5 -113t-72.5 -283v-22zM496 1562l7 108q147 0 226 -51.5t79 -137.5q0 -70 -43 -106.5t-108 -45.5l-1 -71h-140l-1 154q76 4 108.5 20t32.5 53q0 39 -43.5 58t-116.5 19z" />
+<glyph unicode="&#x1ee0;" horiz-adv-x="1403" d="M108 598v259q0 266 159.5 443t414.5 177q120 0 223 -40t182 -113q123 11 187 96.5t64 232.5h197q0 -192 -88 -313.5t-250 -157.5q38 -71 59 -154t21 -171v-259q0 -267 -165.5 -443t-429.5 -176q-255 0 -414.5 176t-159.5 443zM305 598q0 -202 102.5 -330t274.5 -128 q183 0 290.5 127.5t107.5 330.5v261q0 200 -108 328t-290 128q-172 0 -274.5 -128t-102.5 -328v-261zM354 1610q0 93 59 161.5t150 68.5q56 0 140 -47t136 -47q41 0 71 32.5t30 79.5l108 -32q0 -94 -59.5 -159t-149.5 -65q-71 0 -148 46.5t-128 46.5q-43 0 -72 -32.5 t-29 -78.5z" />
+<glyph unicode="&#x1ee1;" horiz-adv-x="1175" d="M97 529v22q0 240 130 395.5t353 155.5q102 0 187 -35t149 -98q82 18 122 84t40 170h178q0 -143 -66.5 -237t-195.5 -126q35 -66 53.5 -144.5t18.5 -164.5v-22q0 -242 -130 -396t-354 -154t-354.5 154.5t-130.5 395.5zM235 1306q0 93 59 161.5t150 68.5q56 0 140 -47 t136 -47q41 0 71 32.5t30 79.5l108 -32q0 -94 -59.5 -159t-149.5 -65q-71 0 -148 46.5t-128 46.5q-43 0 -72 -32.5t-29 -78.5zM294 529q0 -172 72.5 -284t215.5 -112q141 0 214 112t73 284v22q0 170 -73.5 283t-215.5 113q-141 0 -213.5 -113t-72.5 -283v-22z" />
+<glyph unicode="&#x1ee2;" horiz-adv-x="1403" d="M108 598v259q0 266 159.5 443t414.5 177q120 0 223 -40t182 -113q123 11 187 96.5t64 232.5h197q0 -192 -88 -313.5t-250 -157.5q38 -71 59 -154t21 -171v-259q0 -267 -165.5 -443t-429.5 -176q-255 0 -414.5 176t-159.5 443zM305 598q0 -202 102.5 -330t274.5 -128 q183 0 290.5 127.5t107.5 330.5v261q0 200 -108 328t-290 128q-172 0 -274.5 -128t-102.5 -328v-261zM583 -137h218v-200h-218v200z" />
+<glyph unicode="&#x1ee3;" horiz-adv-x="1175" d="M97 529v22q0 240 130 395.5t353 155.5q102 0 187 -35t149 -98q82 18 122 84t40 170h178q0 -143 -66.5 -237t-195.5 -126q35 -66 53.5 -144.5t18.5 -164.5v-22q0 -242 -130 -396t-354 -154t-354.5 154.5t-130.5 395.5zM294 529q0 -172 72.5 -284t215.5 -112q141 0 214 112 t73 284v22q0 170 -73.5 283t-215.5 113q-141 0 -213.5 -113t-72.5 -283v-22zM473 -145h218v-200h-218v200z" />
+<glyph unicode="&#x1ee4;" horiz-adv-x="1386" d="M147 469v987h197v-987q0 -165 94 -250.5t248 -85.5q162 0 261.5 85.5t99.5 250.5v987h197v-987q0 -238 -154.5 -364t-403.5 -126q-240 0 -389.5 126.5t-149.5 363.5zM587 -144h218v-200h-218v200z" />
+<glyph unicode="&#x1ee5;" d="M139 444v638h197v-640q0 -173 51 -238t159 -65q105 0 173.5 42.5t103.5 120.5v780h197v-1082h-177l-13 160q-51 -87 -131 -134t-185 -47q-177 0 -276 113t-99 352zM405 -137h218v-200h-218v200z" />
+<glyph unicode="&#x1ee6;" horiz-adv-x="1386" d="M147 469v987h197v-987q0 -165 94 -250.5t248 -85.5q162 0 261.5 85.5t99.5 250.5v987h197v-987q0 -238 -154.5 -364t-403.5 -126q-240 0 -389.5 126.5t-149.5 363.5zM611 1884l7 108q147 0 226 -51.5t79 -137.5q0 -70 -43 -106.5t-108 -45.5l-1 -71h-140l-1 154 q76 4 108.5 20t32.5 53q0 39 -43.5 58t-116.5 19z" />
+<glyph unicode="&#x1ee7;" d="M139 444v638h197v-640q0 -173 51 -238t159 -65q105 0 173.5 42.5t103.5 120.5v780h197v-1082h-177l-13 160q-51 -87 -131 -134t-185 -47q-177 0 -276 113t-99 352zM494 1543l7 108q147 0 226 -51.5t79 -137.5q0 -70 -43 -106.5t-108 -45.5l-1 -71h-140l-1 154 q76 4 108.5 20t32.5 53q0 39 -43.5 58t-116.5 19z" />
+<glyph unicode="&#x1ee8;" horiz-adv-x="1430" d="M147 469v987h197v-987q0 -165 94 -250.5t248 -85.5q162 0 261.5 85.5t99.5 250.5v987h197v-178l6 -2q86 27 132 108.5t46 206.5h190l3 -5q2 -193 -96 -314.5t-281 -155.5v-647q0 -238 -154.5 -364t-403.5 -126q-240 0 -389.5 126.5t-149.5 363.5zM606 1556l185 266h230 l2 -6l-270 -260h-147z" />
+<glyph unicode="&#x1ee9;" horiz-adv-x="1204" d="M139 444v638h197v-640q0 -173 51 -238t159 -65q105 0 173.5 42.5t103.5 120.5v780h197v-114l6 -2q100 7 142.5 71t42.5 190h169l3 -6q3 -177 -85.5 -273t-277.5 -110v-838h-177l-13 160q-51 -87 -131 -134t-185 -47q-177 0 -276 113t-99 352zM490 1213l185 266h230l2 -6 l-270 -260h-147z" />
+<glyph unicode="&#x1eea;" horiz-adv-x="1430" d="M147 469v987h197v-987q0 -165 94 -250.5t248 -85.5q162 0 261.5 85.5t99.5 250.5v987h197v-178l6 -2q86 27 132 108.5t46 206.5h190l3 -5q2 -193 -96 -314.5t-281 -155.5v-647q0 -238 -154.5 -364t-403.5 -126q-240 0 -389.5 126.5t-149.5 363.5zM371 1820l3 6h230 l175 -266h-158z" />
+<glyph unicode="&#x1eeb;" horiz-adv-x="1204" d="M139 444v638h197v-640q0 -173 51 -238t159 -65q105 0 173.5 42.5t103.5 120.5v780h197v-114l6 -2q100 7 142.5 71t42.5 190h169l3 -6q3 -177 -85.5 -273t-277.5 -110v-838h-177l-13 160q-51 -87 -131 -134t-185 -47q-177 0 -276 113t-99 352zM255 1477l3 6h230l175 -266 h-158z" />
+<glyph unicode="&#x1eec;" horiz-adv-x="1430" d="M147 469v987h197v-987q0 -165 94 -250.5t248 -85.5q162 0 261.5 85.5t99.5 250.5v987h197v-178l6 -2q86 27 132 108.5t46 206.5h190l3 -5q2 -193 -96 -314.5t-281 -155.5v-647q0 -238 -154.5 -364t-403.5 -126q-240 0 -389.5 126.5t-149.5 363.5zM610 1884l7 108 q147 0 226 -51.5t79 -137.5q0 -70 -43 -106.5t-108 -45.5l-1 -71h-140l-1 154q76 4 108.5 20t32.5 53q0 39 -43.5 58t-116.5 19z" />
+<glyph unicode="&#x1eed;" horiz-adv-x="1204" d="M139 444v638h197v-640q0 -173 51 -238t159 -65q105 0 173.5 42.5t103.5 120.5v780h197v-114l6 -2q100 7 142.5 71t42.5 190h169l3 -6q3 -177 -85.5 -273t-277.5 -110v-838h-177l-13 160q-51 -87 -131 -134t-185 -47q-177 0 -276 113t-99 352zM494 1543l7 108 q147 0 226 -51.5t79 -137.5q0 -70 -43 -106.5t-108 -45.5l-1 -71h-140l-1 154q76 4 108.5 20t32.5 53q0 39 -43.5 58t-116.5 19z" />
+<glyph unicode="&#x1eee;" horiz-adv-x="1430" d="M147 469v987h197v-987q0 -165 94 -250.5t248 -85.5q162 0 261.5 85.5t99.5 250.5v987h197v-178l6 -2q86 27 132 108.5t46 206.5h190l3 -5q2 -193 -96 -314.5t-281 -155.5v-647q0 -238 -154.5 -364t-403.5 -126q-240 0 -389.5 126.5t-149.5 363.5zM349 1628q0 93 59 161.5 t150 68.5q56 0 140 -47t136 -47q41 0 71 32.5t30 79.5l108 -32q0 -94 -59.5 -159t-149.5 -65q-71 0 -148 46.5t-128 46.5q-43 0 -72 -32.5t-29 -78.5z" />
+<glyph unicode="&#x1eef;" horiz-adv-x="1204" d="M139 444v638h197v-640q0 -173 51 -238t159 -65q105 0 173.5 42.5t103.5 120.5v780h197v-114l6 -2q100 7 142.5 71t42.5 190h169l3 -6q3 -177 -85.5 -273t-277.5 -110v-838h-177l-13 160q-51 -87 -131 -134t-185 -47q-177 0 -276 113t-99 352zM233 1285q0 93 59 161.5 t150 68.5q56 0 140 -47t136 -47q41 0 71 32.5t30 79.5l108 -32q0 -94 -59.5 -159t-149.5 -65q-71 0 -148 46.5t-128 46.5q-43 0 -72 -32.5t-29 -78.5z" />
+<glyph unicode="&#x1ef0;" horiz-adv-x="1430" d="M147 469v987h197v-987q0 -165 94 -250.5t248 -85.5q162 0 261.5 85.5t99.5 250.5v987h197v-178l6 -2q86 27 132 108.5t46 206.5h190l3 -5q2 -193 -96 -314.5t-281 -155.5v-647q0 -238 -154.5 -364t-403.5 -126q-240 0 -389.5 126.5t-149.5 363.5zM587 -144h218v-200h-218 v200z" />
+<glyph unicode="&#x1ef1;" horiz-adv-x="1204" d="M139 444v638h197v-640q0 -173 51 -238t159 -65q105 0 173.5 42.5t103.5 120.5v780h197v-114l6 -2q100 7 142.5 71t42.5 190h169l3 -6q3 -177 -85.5 -273t-277.5 -110v-838h-177l-13 160q-51 -87 -131 -134t-185 -47q-177 0 -276 113t-99 352zM405 -137h218v-200h-218v200 z" />
+<glyph unicode="&#x1ef2;" horiz-adv-x="1250" d="M20 1456h225l380 -740l380 740h225l-511 -944v-512h-196v525zM300 1819l3 6h230l175 -266h-158z" />
+<glyph unicode="&#x1ef3;" horiz-adv-x="1030" d="M26 1082h220l228 -681l35 -136h6l266 817h219l-455 -1248q-41 -109 -117.5 -190t-206.5 -81q-24 0 -61 5.5t-57 10.5l20 155q-6 1 35.5 -2t52.5 -3q63 0 103 56t67 124l47 113zM189 1477l3 6h230l175 -266h-158z" />
+<glyph unicode="&#x1ef4;" horiz-adv-x="1250" d="M20 1456h225l380 -740l380 740h225l-511 -944v-512h-196v525zM516 -127h218v-200h-218v200z" />
+<glyph unicode="&#x1ef5;" horiz-adv-x="1030" d="M26 1082h220l228 -681l35 -136h6l266 817h219l-455 -1248q-41 -109 -117.5 -190t-206.5 -81q-24 0 -61 5.5t-57 10.5l20 155q-6 1 35.5 -2t52.5 -3q63 0 103 56t67 124l47 113zM608 -293h218v-200h-218v200z" />
+<glyph unicode="&#x1ef6;" horiz-adv-x="1250" d="M20 1456h225l380 -740l380 740h225l-511 -944v-512h-196v525zM539 1883l7 108q147 0 226 -51.5t79 -137.5q0 -70 -43 -106.5t-108 -45.5l-1 -71h-140l-1 154q76 4 108.5 20t32.5 53q0 39 -43.5 58t-116.5 19z" />
+<glyph unicode="&#x1ef7;" horiz-adv-x="1030" d="M26 1082h220l228 -681l35 -136h6l266 817h219l-455 -1248q-41 -109 -117.5 -190t-206.5 -81q-24 0 -61 5.5t-57 10.5l20 155q-6 1 35.5 -2t52.5 -3q63 0 103 56t67 124l47 113zM428 1543l7 108q147 0 226 -51.5t79 -137.5q0 -70 -43 -106.5t-108 -45.5l-1 -71h-140 l-1 154q76 4 108.5 20t32.5 53q0 39 -43.5 58t-116.5 19z" />
+<glyph unicode="&#x1ef8;" horiz-adv-x="1250" d="M20 1456h225l380 -740l380 740h225l-511 -944v-512h-196v525zM278 1627q0 93 59 161.5t150 68.5q56 0 140 -47t136 -47q41 0 71 32.5t30 79.5l108 -32q0 -94 -59.5 -159t-149.5 -65q-71 0 -148 46.5t-128 46.5q-43 0 -72 -32.5t-29 -78.5z" />
+<glyph unicode="&#x1ef9;" horiz-adv-x="1030" d="M26 1082h220l228 -681l35 -136h6l266 817h219l-455 -1248q-41 -109 -117.5 -190t-206.5 -81q-24 0 -61 5.5t-57 10.5l20 155q-6 1 35.5 -2t52.5 -3q63 0 103 56t67 124l47 113zM167 1285q0 93 59 161.5t150 68.5q56 0 140 -47t136 -47q41 0 71 32.5t30 79.5l108 -32 q0 -94 -59.5 -159t-149.5 -65q-71 0 -148 46.5t-128 46.5q-43 0 -72 -32.5t-29 -78.5z" />
+<glyph unicode="&#x1f4d;" horiz-adv-x="1396" d="M-220 1341v143l162 198h108l-82 -204v-137h-188zM81 1343v27l102 313h209v-21l-229 -319h-82zM113 598v259q0 266 159.5 443t414.5 177q264 0 429.5 -176.5t165.5 -443.5v-259q0 -267 -165.5 -443t-429.5 -176q-255 0 -414.5 176t-159.5 443zM310 598q0 -202 102.5 -330 t274.5 -128q183 0 290.5 127.5t107.5 330.5v261q0 200 -108 328t-290 128q-172 0 -274.5 -128t-102.5 -328v-261z" />
+<glyph unicode="&#x1fde;" horiz-adv-x="844" d="M104 1135v143l162 198h108l-82 -204v-137h-188zM405 1137v27l102 313h209v-21l-229 -319h-82z" />
+<glyph unicode="&#x2000;" horiz-adv-x="1044" />
+<glyph unicode="&#x2001;" horiz-adv-x="2089" />
+<glyph unicode="&#x2002;" horiz-adv-x="1044" />
+<glyph unicode="&#x2003;" horiz-adv-x="2089" />
+<glyph unicode="&#x2004;" horiz-adv-x="697" />
+<glyph unicode="&#x2005;" horiz-adv-x="522" />
+<glyph unicode="&#x2006;" horiz-adv-x="348" />
+<glyph unicode="&#x2007;" horiz-adv-x="1151" />
+<glyph unicode="&#x2008;" horiz-adv-x="560" />
+<glyph unicode="&#x2009;" horiz-adv-x="418" />
+<glyph unicode="&#x200a;" horiz-adv-x="209" />
+<glyph unicode="&#x200b;" horiz-adv-x="0" />
+<glyph unicode="&#x2010;" horiz-adv-x="561" d="M35 538v154h490v-154h-490z" />
+<glyph unicode="&#x2011;" horiz-adv-x="561" d="M35 538v154h490v-154h-490z" />
+<glyph unicode="&#x2012;" horiz-adv-x="561" d="M35 538v154h490v-154h-490z" />
+<glyph unicode="&#x2013;" horiz-adv-x="1416" d="M169 648v155h1086v-155h-1086z" />
+<glyph unicode="&#x2014;" horiz-adv-x="1660" d="M141 648v155h1336v-155h-1336z" />
+<glyph unicode="&#x2015;" horiz-adv-x="1660" d="M141 648v155h1336v-155h-1336z" />
+<glyph unicode="&#x2017;" horiz-adv-x="935" d="M5 0h923v-154h-923v154zM5 -254h923v-154h-923v154z" />
+<glyph unicode="&#x2018;" horiz-adv-x="418" d="M80 1020v184l160 356h97l-60 -362v-178h-197z" />
+<glyph unicode="&#x2019;" horiz-adv-x="418" d="M80 1021l60 343v196h197v-193l-160 -346h-97z" />
+<glyph unicode="&#x201a;" horiz-adv-x="417" d="M80 -255l60 263v241h197v-223l-160 -281h-97z" />
+<glyph unicode="&#x201b;" horiz-adv-x="418" d="M43 1367l160 -346h97l-60 343v196h-197v-193z" />
+<glyph unicode="&#x201c;" horiz-adv-x="744" d="M80 1020v184l160 356h97l-60 -362v-178h-197zM409 1020v184l160 356h97l-60 -362v-178h-197z" />
+<glyph unicode="&#x201d;" horiz-adv-x="752" d="M80 1021l60 343v196h197v-193l-160 -346h-97zM417 1021l60 343v196h197v-193l-160 -346h-97z" />
+<glyph unicode="&#x201e;" horiz-adv-x="726" d="M80 -239l60 325v194h197v-184l-160 -335h-97zM388 -239l60 333v186h197v-184l-160 -335h-97z" />
+<glyph unicode="&#x2020;" horiz-adv-x="1129" d="M70 926v156h394v374h197v-374h399v-156h-399v-926h-197v926h-394z" />
+<glyph unicode="&#x2021;" horiz-adv-x="1170" d="M87 0v154h393v772h-393v156h393v374h197v-374h399v-156h-399v-772h399v-154h-399v-416h-197v416h-393z" />
+<glyph unicode="&#x2022;" horiz-adv-x="695" d="M137 733v60q0 88 56 144t150 56q95 0 151.5 -56t56.5 -144v-60q0 -89 -56 -143.5t-151 -54.5t-151 55t-56 143z" />
+<glyph unicode="&#x2025;" horiz-adv-x="970" d="M161 0v202h197v-202h-197zM604 0v202h197v-202h-197z" />
+<glyph unicode="&#x2026;" horiz-adv-x="1380" d="M161 0v202h197v-202h-197zM604 0v202h197v-202h-197zM1024 0v202h197v-202h-197z" />
+<glyph unicode="&#x202f;" horiz-adv-x="433" />
+<glyph unicode="&#x2030;" horiz-adv-x="1956" d="M64 1099v77q0 127 82 214t218 87q138 0 220 -86.5t82 -214.5v-77q0 -127 -82 -213t-218 -86q-137 0 -219.5 86t-82.5 213zM210 1099q0 -74 40.5 -125.5t115.5 -51.5q73 0 113.5 51t40.5 126v77q0 74 -41 126.5t-115 52.5t-114 -52.5t-40 -126.5v-77zM349 177l711 1138 l109 -67l-711 -1138zM819 279v78q0 126 82 213t218 87q74 0 132.5 -31.5t95.5 -85.5q37 54 95.5 85.5t132.5 31.5q137 0 219.5 -86.5t82.5 -213.5v-78q0 -128 -82 -214t-218 -86q-75 0 -134 30.5t-96 85.5q-37 -55 -95 -85.5t-131 -30.5q-138 0 -220 86t-82 214zM965 279 q0 -75 40.5 -126.5t115.5 -51.5q74 0 114 51.5t40 126.5v78q0 74 -41 126t-115 52t-114 -52t-40 -126v-78zM1421 279q0 -75 40.5 -126.5t115.5 -51.5q73 0 113 51.5t40 126.5v78q0 74 -40.5 126t-114.5 52t-114 -52t-40 -126v-78z" />
+<glyph unicode="&#x2032;" horiz-adv-x="359" d="M80 1055l1 265v240h197v-223l-101 -282h-97z" />
+<glyph unicode="&#x2033;" horiz-adv-x="668" d="M80 1040l1 240v280h197v-270l-101 -250h-97zM389 1040l1 248v272h197v-270l-101 -250h-97z" />
+<glyph unicode="&#x2039;" horiz-adv-x="615" d="M108 541v19l295 389h148l-255 -399l255 -398h-148z" />
+<glyph unicode="&#x203a;" horiz-adv-x="615" d="M88 152l255 398l-255 399h148l295 -389v-19l-295 -389h-148z" />
+<glyph unicode="&#x203c;" horiz-adv-x="1078" d="M171 0v204h198v-204h-198zM171 478v978h197v-978h-197zM710 0v204h198v-204h-198zM710 478v978h197v-978h-197z" />
+<glyph unicode="&#x2044;" horiz-adv-x="933" d="M59 177l711 1138l109 -67l-711 -1138z" />
+<glyph unicode="&#x205f;" horiz-adv-x="541" />
+<glyph unicode="&#x2074;" horiz-adv-x="941" d="M71 840l454 637h177v-604h149v-129h-149v-184h-172v184h-455zM261 873h269v377l-6 1l-13 -26z" />
+<glyph unicode="&#x207f;" horiz-adv-x="864" d="M122 651v800h136l31 -120q36 64 91 99.5t125 35.5q122 0 189.5 -75.5t67.5 -231.5v-508h-180v475q0 102 -35.5 147.5t-100.5 45.5q-53 0 -89 -27t-55 -74v-567h-180z" />
+<glyph unicode="&#x20a3;" horiz-adv-x="1193" d="M28 264v155h641v-155h-641zM180 0v1456h963v-155h-766v-502h664v-155h-664v-644h-197z" />
+<glyph unicode="&#x20a4;" horiz-adv-x="1194" d="M70 441v155h165l-6 143h-158v155h152l-5 146q0 204 112 320.5t300 116.5q200 0 310 -104.5t106 -276.5l-2 -6h-190q0 118 -63 175t-161 57q-99 0 -157 -74.5t-58 -207.5l5 -146h422v-155h-416l5 -143h411v-155h-407q-2 -83 -17 -158t-42 -129h735l-1 -154h-976v154h10 q45 12 68.5 98.5t27.5 188.5h-170z" />
+<glyph unicode="&#x20a7;" horiz-adv-x="1682" d="M164 0v1456h354q232 0 362 -125q105 -101 125 -249h135v261h197v-261h205v-146h-205v-657q0 -76 31.5 -107t83.5 -31q17 0 37.5 4t36.5 10l26 -135q-22 -18 -64.5 -29.5t-85.5 -11.5q-120 0 -191 72.5t-71 227.5v657h-135q-20 -149 -125 -249q-130 -123 -362 -123h-157 v-564h-197zM361 719h157q147 0 220.5 83.5t73.5 205.5q0 123 -73.5 208t-220.5 85h-157v-582z" />
+<glyph unicode="&#x20ab;" horiz-adv-x="1194" d="M98 500v21q0 261 111.5 421t312.5 160q95 0 168.5 -35t125.5 -102v266h-247v155h247v174h197v-174h197v-155h-197v-1231h-161l-23 133q-53 -76 -130 -115t-179 -39q-198 0 -310 143.5t-112 377.5zM165 -122h923v-154h-923v154zM295 500q0 -164 67 -262.5t208 -98.5 q88 0 148 40t98 112v505q-38 67 -98.5 106.5t-145.5 39.5q-142 0 -209.5 -117t-67.5 -304v-21z" />
+<glyph unicode="&#x20ac;" horiz-adv-x="1088" d="M79 481v155h146v136h-146v155h146v15q0 244 141.5 389.5t372.5 145.5q59 0 117.5 -8t124.5 -23l-19 -159q-54 16 -110.5 25.5t-112.5 9.5q-146 0 -231.5 -103t-85.5 -275v-17h492v-155h-492v-136h492v-155h-485l-2 -5q-4 -138 81.5 -240.5t232.5 -102.5q57 0 113 8.5 t108 25.5l19 -157q-56 -15 -117.5 -23t-122.5 -8q-231 0 -373.5 144.5t-142.5 357.5h-146z" />
+<glyph unicode="&#x2105;" horiz-adv-x="1513" d="M124 1099v77q0 127 76.5 214t204.5 87q126 0 202 -74t72 -177l-2 -6h-138q0 57 -35 96t-99 39q-65 0 -100 -52.5t-35 -126.5v-77q0 -74 35.5 -125.5t101.5 -51.5q63 0 97.5 40t34.5 94h138l2 -6q4 -105 -71 -177.5t-201 -72.5q-129 0 -206 86t-77 213zM338 177l711 1138 l109 -67l-711 -1138zM809 279v78q0 127 82 213.5t219 86.5q136 0 218.5 -86.5t82.5 -213.5v-78q0 -128 -82 -214t-217 -86q-138 0 -220.5 86t-82.5 214zM955 279q0 -75 40.5 -126.5t116.5 -51.5q73 0 113 51.5t40 126.5v78q0 74 -41 126t-114 52q-74 0 -114.5 -52 t-40.5 -126v-78z" />
+<glyph unicode="&#x2113;" horiz-adv-x="978" d="M106 419v180q55 0 105.5 6.5t96.5 19.5v473q0 177 79.5 278t218.5 101q122 0 199.5 -86t77.5 -230v-42q0 -158 -101.5 -327t-276.5 -269v-92q0 -145 48 -218t165 -73v-153l-6 -2q-199 -4 -301.5 115.5t-102.5 330.5v12q-49 -12 -99.5 -18t-102.5 -6zM505 741l6 -1 q85 64 130 166t45 211v44q0 76 -22 115t-58 39q-51 0 -76 -54.5t-25 -162.5v-357z" />
+<glyph unicode="&#x2116;" horiz-adv-x="2252" d="M171 0v1456h197l701 -1124l6 2v1122h197v-1456h-197l-701 1126l-6 -2v-1124h-197zM1435 1022v117q0 148 94 241.5t251 93.5q158 0 252 -93.5t94 -241.5v-117q0 -149 -93.5 -241.5t-250.5 -92.5q-158 0 -252.5 92.5t-94.5 241.5zM1521 304v154h490v-154h-490zM1608 1022 q0 -88 44 -140.5t130 -52.5q83 0 127.5 53t44.5 140v117q0 84 -45 137.5t-129 53.5t-128 -53.5t-44 -137.5v-117z" />
+<glyph unicode="&#x2122;" horiz-adv-x="1284" d="M103 1374v82h384v-82h-145v-455h-94v455h-145zM565 919v537h116l161 -390h6l162 390h110v-537h-93v343l-6 2l-150 -345h-51l-156 359l-6 -2v-357h-93z" />
+<glyph unicode="&#x212e;" horiz-adv-x="1304" d="M152 541q0 226 161.5 393.5t362.5 167.5q207 0 351 -155t144 -386v-47h-768v-328q55 -53 125.5 -81.5t147.5 -28.5q95 0 188 30t180 92l2 -104q-87 -55 -181 -84.5t-189 -29.5q-218 0 -371 164.5t-153 396.5zM403 609h540v286q-54 52 -123.5 82.5t-143.5 30.5 t-144.5 -32.5t-128.5 -89.5v-277z" />
+<glyph unicode="&#x215b;" horiz-adv-x="1727" d="M107 1301v134l301 23v-812h-174v655h-127zM321 177l711 1138l109 -67l-711 -1138zM955 225q0 63 44.5 113t120.5 78q-66 27 -103 72t-37 104q0 105 88.5 162.5t223.5 57.5q130 0 216 -57.5t86 -162.5q0 -59 -36.5 -104.5t-98.5 -72.5q73 -28 116 -77.5t43 -112.5 q0 -112 -92.5 -174t-232.5 -62q-146 0 -242 62t-96 174zM1126 232q0 -52 47.5 -82.5t119.5 -30.5q65 0 110 30.5t45 82.5q0 51 -46 84.5t-110 33.5q-70 0 -118 -33t-48 -85zM1152 583q0 -46 40.5 -74.5t100.5 -28.5q53 0 91 28.5t38 74.5q0 45 -37.5 71.5t-92.5 26.5 q-61 0 -100.5 -26t-39.5 -72z" />
+<glyph unicode="&#x215c;" horiz-adv-x="1878" d="M116 876l1 6h163q0 -46 37.5 -74.5t100.5 -28.5q72 0 114 29.5t42 77.5q0 62 -36.5 90.5t-109.5 28.5h-132v126h132q67 0 99.5 28.5t32.5 80.5q0 43 -36.5 72t-105.5 29q-56 0 -90.5 -24t-34.5 -64h-162l-2 6q-6 94 78.5 153.5t210.5 59.5q145 0 229 -59.5t84 -169.5 q0 -55 -35.5 -100.5t-97.5 -71.5q70 -23 108 -71t38 -116q0 -111 -90 -173t-236 -62q-127 0 -217.5 58t-84.5 169zM506 177l711 1138l109 -67l-711 -1138zM1106 225q0 63 44.5 113t120.5 78q-66 27 -103 72t-37 104q0 105 88.5 162.5t223.5 57.5q130 0 216 -57.5t86 -162.5 q0 -59 -36.5 -104.5t-98.5 -72.5q73 -28 116 -77.5t43 -112.5q0 -112 -92.5 -174t-232.5 -62q-146 0 -242 62t-96 174zM1277 232q0 -52 47.5 -82.5t119.5 -30.5q65 0 110 30.5t45 82.5q0 51 -46 84.5t-110 33.5q-70 0 -118 -33t-48 -85zM1303 583q0 -46 40.5 -74.5 t100.5 -28.5q53 0 91 28.5t38 74.5q0 45 -37.5 71.5t-92.5 26.5q-61 0 -100.5 -26t-39.5 -72z" />
+<glyph unicode="&#x215d;" horiz-adv-x="1926" d="M118 859l1 6l162 10q0 -48 41 -75t109 -27q78 0 116 34.5t38 100.5t-38.5 106.5t-105.5 40.5q-65 0 -98.5 -17t-48.5 -47l-150 9l52 455h516v-133h-363l-26 -185q30 17 69.5 29.5t81.5 13.5q132 2 207 -70.5t75 -200.5q0 -122 -79.5 -194t-245.5 -72q-137 0 -228 55 t-85 161zM562 177l711 1138l109 -67l-711 -1138zM1154 225q0 63 44.5 113t120.5 78q-66 27 -103 72t-37 104q0 105 88.5 162.5t223.5 57.5q130 0 216 -57.5t86 -162.5q0 -59 -36.5 -104.5t-98.5 -72.5q73 -28 116 -77.5t43 -112.5q0 -112 -92.5 -174t-232.5 -62 q-146 0 -242 62t-96 174zM1325 232q0 -52 47.5 -82.5t119.5 -30.5q65 0 110 30.5t45 82.5q0 51 -46 84.5t-110 33.5q-70 0 -118 -33t-48 -85zM1351 583q0 -46 40.5 -74.5t100.5 -28.5q53 0 91 28.5t38 74.5q0 45 -37.5 71.5t-92.5 26.5q-61 0 -100.5 -26t-39.5 -72z" />
+<glyph unicode="&#x215e;" horiz-adv-x="1759" d="M107 1324v131h589v-131q-134 -158 -189.5 -259.5t-55.5 -283.5v-127h-172v127q0 181 77.5 320.5t166.5 222.5h-416zM369 177l711 1138l109 -67l-711 -1138zM987 225q0 63 44.5 113t120.5 78q-66 27 -103 72t-37 104q0 105 88.5 162.5t223.5 57.5q130 0 216 -57.5 t86 -162.5q0 -59 -36.5 -104.5t-98.5 -72.5q73 -28 116 -77.5t43 -112.5q0 -112 -92.5 -174t-232.5 -62q-146 0 -242 62t-96 174zM1158 232q0 -52 47.5 -82.5t119.5 -30.5q65 0 110 30.5t45 82.5q0 51 -46 84.5t-110 33.5q-70 0 -118 -33t-48 -85zM1184 583 q0 -46 40.5 -74.5t100.5 -28.5q53 0 91 28.5t38 74.5q0 45 -37.5 71.5t-92.5 26.5q-61 0 -100.5 -26t-39.5 -72z" />
+<glyph unicode="&#x2202;" horiz-adv-x="1186" d="M72 466q0 233 125 372.5t343 139.5q95 0 179 -29.5t138 -81.5l3 5q-22 193 -139.5 311t-293.5 170l60 164q263 -63 424 -265t161 -497v-220q0 -245 -144 -400.5t-359 -155.5q-218 0 -357.5 140t-139.5 347zM269 466q0 -132 82 -232.5t222 -100.5q133 0 217.5 114 t84.5 288v129q-36 67 -122 113t-213 46q-136 0 -203.5 -100.5t-67.5 -256.5z" />
+<glyph unicode="&#x220f;" horiz-adv-x="1436" d="M168 -211v1667h1100v-1667h-197v1512h-706v-1512h-197z" />
+<glyph unicode="&#x2211;" horiz-adv-x="1202" d="M70 -123l610 713l-610 719v147h1049v-155h-808l-2 -5l560 -665v-83l-558 -657l2 -5h885v-155h-1128v146z" />
+<glyph unicode="&#x2212;" horiz-adv-x="1170" d="M168 648v155h835v-155h-835z" />
+<glyph unicode="&#x221a;" horiz-adv-x="1239" d="M63 628v156h328l163 -444l18 -83h6l19 83l399 1116h201l-549 -1456h-149l-248 628h-188z" />
+<glyph unicode="&#x221e;" horiz-adv-x="2095" d="M104 507v66q0 224 124 376.5t329 152.5q164 0 284 -108t201 -263q79 154 199 262.5t285 108.5q203 0 328 -153t125 -376v-66q0 -225 -125 -376.5t-330 -151.5q-165 0 -284 107.5t-199 263.5q-80 -155 -199.5 -263t-282.5 -108q-206 0 -330.5 151.5t-124.5 376.5zM301 507 q0 -170 65.5 -272t192.5 -102q137 0 243.5 139.5t133.5 247.5v42q-28 106 -134.5 245.5t-244.5 139.5q-126 0 -191 -103.5t-65 -270.5v-66zM1146 520q29 -110 135 -248.5t243 -138.5q126 0 192 102.5t66 271.5v66q0 167 -66 270.5t-190 103.5q-138 0 -244 -138.5 t-136 -246.5v-42z" />
+<glyph unicode="&#x222b;" horiz-adv-x="525" d="M-68 -419l14 150q14 -5 46.5 -9t50.5 -4q59 0 93.5 51.5t34.5 141.5v1308q0 173 91 267.5t253 94.5q33 0 67.5 -5.5t76.5 -15.5l-24 -145q-20 5 -42 8t-47 3q-87 0 -132.5 -54.5t-45.5 -152.5v-1308q0 -167 -86 -257.5t-239 -90.5q-31 0 -56.5 4.5t-54.5 13.5z" />
+<glyph unicode="&#x2248;" horiz-adv-x="1154" d="M101 447q47 68 109 107t127 39q69 1 101 -11t133 -62q89 -46 121 -58t97 -12q64 0 126 38.5t110 108.5l9 -175q-48 -69 -110 -107.5t-126 -38.5q-66 0 -99 12.5t-119 56.5q-105 52 -135.5 63.5t-98.5 10.5q-65 0 -127 -39t-109 -108zM111 874q47 68 109 107t127 39 q69 1 101 -11t133 -62q86 -44 119 -56.5t99 -12.5q64 0 126 38.5t110 107.5l9 -174q-48 -69 -110 -107.5t-126 -38.5q-66 0 -99 12.5t-119 56.5q-101 50 -133 62t-101 11q-65 0 -127 -39t-109 -107z" />
+<glyph unicode="&#x2260;" horiz-adv-x="1072" d="M152 407v164h290l140 252h-430v164h521l147 264l87 -60l-114 -204h193v-164h-284l-140 -252h424v-164h-515l-133 -240l-87 60l100 180h-199z" />
+<glyph unicode="&#x2264;" horiz-adv-x="1080" d="M158 588v135l816 340v-181l-559 -210l-85 -16v-5l85 -18l559 -205v-181zM164 7v155h835v-155h-835z" />
+<glyph unicode="&#x2265;" horiz-adv-x="1088" d="M154 247v177l598 214l85 15v6l-85 18l-598 210v176l856 -340v-135zM164 5v155h835v-155h-835z" />
+<glyph unicode="&#x25ca;" horiz-adv-x="1032" d="M41 727l398 729h150l402 -729l-399 -727h-149zM242 727l257 -511l17 -50h6l18 50l250 511l-257 512l-17 50h-6l-18 -50z" />
+<glyph unicode="&#xe000;" horiz-adv-x="1080" d="M0 0v1080h1080v-1080h-1080z" />
+<glyph unicode="&#xf6c3;" horiz-adv-x="520" d="M101 -134l61 246v131h158v-140l-122 -237h-97z" />
+<glyph unicode="&#xfb02;" horiz-adv-x="1223" d="M56 936v146h169v137q0 173 90.5 267.5t252.5 94.5q34 0 68.5 -5.5t76.5 -15.5l-24 -150q-18 4 -43.5 7t-53.5 3q-86 0 -128 -51.5t-42 -149.5v-137h225v-146h-225v-936h-197v936h-169zM866 0v1560h197v-1560h-197z" />
+<glyph unicode="&#xfb03;" horiz-adv-x="1847" d="M56 936v146h169v137q0 173 90.5 267.5t252.5 94.5q34 0 68.5 -5.5t76.5 -15.5l-24 -150q-18 4 -43.5 7t-53.5 3q-86 0 -128 -51.5t-42 -149.5v-137h225v-146h-225v-936h-197v936h-169zM735 936v146h170v117q0 182 106.5 282t295.5 100q67 0 132 -15.5t153 -45.5l-34 -160 q-53 21 -113 36t-123 15q-117 0 -168.5 -52t-51.5 -160v-117h215v-146h-215v-936h-197v936h-170zM1490 0v1082h198v-1082h-198z" />
+<glyph unicode="&#xfb04;" horiz-adv-x="1930" d="M56 936v146h169v137q0 173 90.5 267.5t252.5 94.5q34 0 68.5 -5.5t76.5 -15.5l-24 -150q-18 4 -43.5 7t-53.5 3q-86 0 -128 -51.5t-42 -149.5v-137h225v-146h-225v-936h-197v936h-169zM763 936v146h169v137q0 173 90.5 267.5t252.5 94.5q34 0 68.5 -5.5t76.5 -15.5 l-24 -150q-18 4 -43.5 7t-53.5 3q-86 0 -128 -51.5t-42 -149.5v-137h225v-146h-225v-936h-197v936h-169zM1573 0v1560h197v-1560h-197z" />
+<glyph unicode="&#xfeff;" horiz-adv-x="0" />
+<glyph unicode="&#xfffc;" horiz-adv-x="2100" d="M91 41v249h113v-249h-113zM91 -83h113v-202h196v-113h-309v315zM91 416v252h113v-252h-113zM91 794v250h113v-250h-113zM91 1169v285h309v-116h-196v-169h-113zM364 468v112q0 96 64 157.5t166 61.5t166.5 -61.5t64.5 -157.5v-112q0 -98 -64 -158.5t-165 -60.5 q-104 0 -168 60.5t-64 158.5zM456 468q0 -69 37 -108t103 -39q63 0 100 39t37 108v112q0 68 -37.5 107.5t-101.5 39.5t-101 -39.5t-37 -107.5v-112zM523 -285h276v-113h-276v113zM523 1338v116h276v-116h-276zM892 252v549h188q101 0 156.5 -37.5t55.5 -112.5q0 -39 -22 -70 t-62 -46q48 -13 75 -48t27 -80q0 -76 -52.5 -115.5t-144.5 -39.5h-221zM922 -285h277v-113h-277v113zM922 1338v116h277v-116h-277zM987 327h126q50 0 76.5 21.5t26.5 61.5q0 38 -25.5 61t-72.5 25h-5h-126v-169zM987 566h93q58 0 88 20t30 60q0 39 -28.5 55t-89.5 16h-93 v-151zM1321 -285h278v-113h-278v113zM1321 1338v116h278v-116h-278zM1402 412l2 6h84q0 -46 27 -68.5t77 -22.5q40 0 67.5 27t27.5 71v378h92v-378q0 -79 -53 -125t-134 -46q-91 0 -143.5 40.5t-46.5 117.5zM1720 -285h199v202h111v-315h-310v113zM1720 1338v116h310v-285 h-111v169h-199zM1919 41v249h111v-249h-111zM1919 416v252h111v-252h-111zM1919 794v250h111v-250h-111z" />
+<glyph unicode="&#xfffd;" horiz-adv-x="2101" d="M92 643l956 975l959 -975l-959 -975zM747 809l3 -6h194q1 51 30.5 77t72.5 26q54 0 83.5 -31.5t29.5 -84.5q0 -50 -25.5 -88.5t-67.5 -66.5q-79 -55 -108.5 -100t-29.5 -133h202q0 53 13 83.5t53 56.5q72 39 119 104.5t47 143.5q0 128 -84.5 203.5t-231.5 75.5 q-136 0 -219.5 -65t-80.5 -195zM929 141h202v170h-202v-170zM1054 2142v4h4v-4h-4zM1056 -551h4v-4h-4v4z" />
+<glyph horiz-adv-x="0" />
+<glyph horiz-adv-x="515" d="M-103 1317v146h721v-146h-721zM153 0v1165h196v-1165h-196z" />
+<glyph horiz-adv-x="900" d="M112 225q0 63 44.5 113t120.5 78q-66 27 -103 72t-37 104q0 105 88.5 162.5t223.5 57.5q130 0 216 -57.5t86 -162.5q0 -59 -36.5 -104.5t-98.5 -72.5q73 -28 116 -77.5t43 -112.5q0 -112 -92.5 -174t-232.5 -62q-146 0 -242 62t-96 174zM283 232q0 -52 47.5 -82.5 t119.5 -30.5q65 0 110 30.5t45 82.5q0 51 -46 84.5t-110 33.5q-70 0 -118 -33t-48 -85zM309 583q0 -46 40.5 -74.5t100.5 -28.5q53 0 91 28.5t38 74.5q0 45 -37.5 71.5t-92.5 26.5q-61 0 -100.5 -26t-39.5 -72z" />
+<glyph horiz-adv-x="876" d="M104 543q0 114 90 191.5t233 77.5q138 0 229.5 -86t91.5 -220v-235q0 -125 -97.5 -203.5t-243.5 -78.5q-51 0 -106 9t-105 25l28 127q43 -17 85 -24t98 -7q72 0 120 42t48 109v73q-31 -33 -73 -50t-89 -17q-145 0 -227 72.5t-82 194.5zM275 543q0 -66 37.5 -105.5 t110.5 -39.5q60 0 99.5 24.5t52.5 59.5v24q0 76 -44 125.5t-110 49.5t-106 -41.5t-40 -96.5z" />
+<glyph horiz-adv-x="1072" d="M120 427v311q0 195 136.5 319t334.5 124q66 0 139.5 -14t140.5 -37l-33 -148q-58 24 -115 35t-130 11q-121 0 -198.5 -81.5t-77.5 -206.5v-106q50 52 121.5 81t159.5 29q185 0 285 -99t100 -278q0 -171 -119.5 -277.5t-310.5 -106.5q-186 0 -309.5 124t-123.5 320z M317 427q0 -125 67 -208.5t169 -83.5q105 0 169 67t64 165q0 104 -57 163.5t-175 59.5q-88 0 -149 -32t-88 -86v-45z" />
+<glyph horiz-adv-x="1128" d="M71 357l575 808h204v-776h195v-154h-195v-235h-197v235h-578zM288 389h365v507l-6 2z" />
+<glyph horiz-adv-x="1046" d="M95 316l2 6h186q0 -77 60.5 -132t155.5 -55q108 0 171 54.5t63 136.5q0 98 -55.5 145.5t-165.5 47.5h-168v150h168q104 0 153.5 47.5t49.5 131.5q0 76 -55 128t-161 52q-84 0 -141 -48t-57 -119h-187l-2 6q-6 140 107 227t280 87q192 0 302.5 -86t110.5 -246 q0 -80 -48 -146.5t-132 -104.5q96 -35 147.5 -104t51.5 -168q0 -161 -120 -252t-312 -91q-168 0 -288.5 85.5t-115.5 247.5z" />
+<glyph horiz-adv-x="997" d="M95 836q-6 143 106 244t299 101q175 0 275.5 -92t100.5 -260q0 -109 -58.5 -185.5t-216.5 -236.5l-248 -249l3 -6h527v-152h-781v152l406 406q102 97 136.5 154t34.5 119q0 84 -46 140.5t-133 56.5q-101 0 -158 -57.5t-57 -140.5h-188z" />
+<glyph horiz-adv-x="606" d="M78 988v160l373 33v-1181h-197v990z" />
+<glyph horiz-adv-x="1145" d="M120 411v343q0 195 123.5 311t324.5 116q202 0 326 -116t124 -311v-343q0 -197 -123.5 -312.5t-324.5 -115.5q-202 0 -326 116t-124 312zM317 411q0 -125 68.5 -200.5t184.5 -75.5t183.5 75t67.5 201v344q0 124 -68 198.5t-185 74.5q-115 0 -183 -75t-68 -198v-344z" />
+<glyph horiz-adv-x="1088" d="M78 0v118l641 894h-607v153h848v-114l-643 -899h667v-152h-906z" />
+<glyph horiz-adv-x="1121" d="M30 1165h221l302 -576l303 576h221l-428 -755v-410h-197v419z" />
+<glyph horiz-adv-x="1161" d="M55 0l402 588l-393 577h232l274 -433l278 433h233l-392 -577l401 -588h-230l-287 442l-285 -442h-233z" />
+<glyph horiz-adv-x="1538" d="M63 1165h211l181 -901v-3l1 5l221 899h183l221 -901v-3l1 5l179 899h211l-294 -1165h-182l-225 855h-6l-227 -855h-181z" />
+<glyph horiz-adv-x="1211" d="M39 1165h211l321 -868l23 -82h6l23 80l321 870h211l-466 -1165h-185z" />
+<glyph horiz-adv-x="1284" d="M137 398v767h196v-767q0 -123 84.5 -193t220.5 -70q137 0 221.5 69.5t84.5 193.5v767h196v-767q0 -195 -139.5 -305t-362.5 -110q-221 0 -361 110t-140 305z" />
+<glyph horiz-adv-x="1072" d="M71 1012v153h906v-153h-357v-1012h-197v1012h-352z" />
+<glyph horiz-adv-x="1137" d="M99 337l1 6h188q0 -108 81.5 -158t199.5 -50q131 0 203 47t72 122q0 71 -62 115t-224 84q-223 58 -324.5 132.5t-101.5 224.5q0 147 121.5 234t327.5 87q210 0 327.5 -93t112.5 -261l-2 -6h-187q0 92 -66 149.5t-185 57.5q-125 0 -188.5 -46.5t-63.5 -120.5 q0 -73 57.5 -113.5t235.5 -83.5q215 -58 317 -136t102 -223q0 -154 -127 -238t-345 -84q-202 0 -339 85t-131 269z" />
+<glyph horiz-adv-x="1197" d="M153 0v1165h461q205 0 317.5 -90t112.5 -252q0 -89 -49.5 -152t-145.5 -102q104 -30 149.5 -102t45.5 -177v-118q0 -45 5.5 -88t18.5 -65v-19h-203q-12 23 -15 72t-3 101v116q0 90 -52 140t-150 50h-295v-479h-197zM350 633h264q120 0 176 47t56 135q0 92 -56.5 144.5 t-175.5 52.5h-264v-379z" />
+<glyph horiz-adv-x="1251" d="M112 461v243q0 212 138.5 344.5t361.5 132.5q224 0 363.5 -132.5t139.5 -344.5v-243q0 -89 -26 -166.5t-74 -137.5l163 -159l-135 -116l-167 161q-56 -30 -122.5 -45t-139.5 -15q-223 0 -362.5 132.5t-139.5 345.5zM309 461q0 -154 81.5 -240t223.5 -86t223 86t81 240 v244q0 151 -82 237t-224 86q-141 0 -222 -86t-81 -237v-244z" />
+<glyph horiz-adv-x="1246" d="M139 555v345q0 278 130 427.5t353 149.5q224 0 354 -149.5t130 -427.5v-345q0 -279 -129 -427.5t-353 -148.5t-354.5 149t-130.5 427zM336 515q0 -189 74.5 -285.5t213.5 -96.5q140 0 212.5 96t72.5 286v427q0 189 -73.5 284.5t-213.5 95.5q-139 0 -212.5 -95.5 t-73.5 -284.5v-427z" />
+<glyph horiz-adv-x="1227" d="M112 461v243q0 212 138.5 344.5t361.5 132.5q224 0 363.5 -132.5t139.5 -344.5v-243q0 -214 -138.5 -346t-362.5 -132q-223 0 -362.5 132.5t-139.5 345.5zM309 461q0 -154 81.5 -240t223.5 -86t223 86t81 240v244q0 151 -82 237t-224 86q-141 0 -222 -86t-81 -237v-244z " />
+<glyph horiz-adv-x="1308" d="M153 0v1165h197l590 -859l6 2v857h196v-1165h-196l-590 859l-6 -2v-857h-197z" />
+<glyph horiz-adv-x="928" d="M146 648v155h641v-155h-641z" />
+<glyph horiz-adv-x="1528" d="M153 0v1165h254l352 -906h6l354 906h246v-1165h-197v809l-6 2l-332 -811h-136l-338 829l-6 -2v-827h-197z" />
+<glyph horiz-adv-x="957" d="M153 0v1165h197v-1013h525v-152h-722z" />
+<glyph horiz-adv-x="1121" d="M153 0v1165h197v-508h84l388 508h231l3 -5l-455 -554l488 -601l-3 -5h-241l-396 500h-99v-500h-197z" />
+<glyph horiz-adv-x="1039" d="M70 331l2 6h188q0 -101 59 -151.5t166 -50.5q88 0 147 60.5t59 158.5v811h196v-811q0 -170 -113.5 -270.5t-288.5 -100.5q-195 0 -308 89t-107 259z" />
+<glyph horiz-adv-x="515" d="M153 0v1165h196v-1165h-196z" />
+<glyph horiz-adv-x="1275" d="M153 0v1165h197v-521h566v521h198v-1165h-198v491h-566v-491h-197z" />
+<glyph horiz-adv-x="1235" d="M112 461v243q0 211 145 344t370 133q222 0 343.5 -100.5t117.5 -257.5l-2 -6h-188q0 101 -72.5 156t-198.5 55q-140 0 -229 -92t-89 -231v-244q0 -142 88 -234t234 -92q105 0 173.5 21t99.5 48v250h-258v154h453v-451q-45 -65 -166 -119.5t-302 -54.5q-231 0 -375 132.5 t-144 345.5z" />
+<glyph horiz-adv-x="1055" d="M153 0v1165h817v-153h-620v-357h533v-154h-533v-501h-197z" />
+<glyph horiz-adv-x="1095" d="M153 0v1165h815v-153h-618v-328h531v-154h-531v-378h618v-152h-815z" />
+<glyph horiz-adv-x="1194" d="M153 0v1165h421q211 0 355 -134.5t144 -343.5v-210q0 -210 -144 -343.5t-355 -133.5h-421zM350 152h224q126 0 214 93t88 232v211q0 137 -88 230.5t-214 93.5h-224v-860z" />
+<glyph horiz-adv-x="1170" d="M112 461v243q0 209 138.5 343t345.5 134q212 0 339 -101.5t122 -288.5l-2 -6h-189q0 121 -71 182t-199 61q-123 0 -205 -93t-82 -230v-244q0 -139 82 -232.5t205 -93.5q127 0 198 61t71 185h189l2 -6q5 -189 -124.5 -290.5t-335.5 -101.5q-207 0 -345.5 134t-138.5 344z " />
+<glyph horiz-adv-x="1145" d="M153 0v1165h397q213 0 331.5 -79.5t118.5 -238.5q0 -84 -47 -149t-134 -98q102 -25 160 -100t58 -171q0 -162 -110.5 -245.5t-307.5 -83.5h-466zM350 152h269q109 0 164.5 47t55.5 135q0 84 -53 134t-156 53h-11h-269v-369zM350 662h200q124 0 188.5 44.5t64.5 129.5 q0 86 -61.5 121t-191.5 35h-200v-330z" />
+<glyph horiz-adv-x="519" d="M160 1164v148l121 247h97l-21 -257v-138h-197z" />
+<glyph horiz-adv-x="932" d="M136 1450l2 6h151q0 -51 34.5 -82.5t109.5 -31.5q73 0 108 31.5t35 82.5h152l2 -6q6 -89 -76 -146t-221 -57q-140 0 -222 57t-75 146zM180 1669l2 6h179l138 -197h-119z" />
+<glyph horiz-adv-x="1210" d="M39 0l469 1165h186l468 -1165h-203l-104 268h-509l-103 -268h-204zM405 422h391l-193 498h-6z" />
+<glyph horiz-adv-x="1033" d="M120 1258l289 257h158l288 -257l-2 -6h-198l-167 157l-167 -157h-199zM786 1428l140 260h211l-204 -260h-147z" />
+<glyph horiz-adv-x="1034" d="M-171 1688h210l140 -260h-147zM110 1258l288 257h158l289 -257l-2 -6h-199l-167 157l-167 -157h-198z" />
+<glyph horiz-adv-x="1039" d="M110 1258l268 257h198l269 -257l-2 -6h-170l-196 186l-196 -186h-169zM803 1651l6 94q127 0 195.5 -43.5t68.5 -118.5q0 -61 -37.5 -93t-94.5 -39l-1 -61h-120l-1 133q66 4 93.5 17t27.5 45q0 34 -37.5 50t-99.5 16z" />
+<glyph horiz-adv-x="1034" d="M110 1258l289 257h157l289 -257l-2 -6h-170l-196 176l-196 -176h-169zM209 1586q0 69 48 124.5t114 55.5q42 0 103.5 -34.5t100.5 -34.5q30 0 57 28t27 63l79 -23q0 -69 -48.5 -122.5t-114.5 -53.5q-53 0 -109.5 35.5t-94.5 35.5q-31 0 -56.5 -29.5t-25.5 -63.5z" />
+<glyph horiz-adv-x="932" d="M136 1450l2 6h151q0 -51 34.5 -82.5t109.5 -31.5q73 0 108 31.5t35 82.5h152l2 -6q6 -89 -76 -146t-221 -57q-140 0 -222 57t-75 146zM375 1478l108 197h155l2 -5l-159 -192h-106z" />
+<glyph horiz-adv-x="932" d="M136 1450l2 6h144q0 -50 34 -82t106 -32q71 0 105 31.5t34 82.5h145l2 -6q6 -89 -73 -145.5t-213 -56.5q-135 0 -214 56.5t-72 145.5zM354 1751l7 83q142 0 218 -39t76 -105q0 -53 -41.5 -80.5t-104.5 -34.5l-1 -63h-135l-1 126q73 3 103 14.5t25 37.5v6q5 28 -35.5 41.5 t-110.5 13.5z" />
+<glyph horiz-adv-x="933" d="M136 1450l2 6h148q0 -52 33.5 -84.5t107.5 -32.5q71 0 105.5 32.5t34.5 84.5h148l2 -6q6 -91 -74 -149t-216 -58q-137 0 -217.5 58t-73.5 149zM159 1550q0 74 47 129.5t120 55.5q45 0 112.5 -38t110.5 -38q32 0 56 25.5t24 63.5l86 -24q0 -75 -47.5 -128.5t-118.5 -53.5 q-58 0 -120 38t-103 38q-34 0 -56.5 -26t-22.5 -63z" />
+<glyph horiz-adv-x="401" d="M96 157h197v-516h-197v516z" />
+<glyph horiz-adv-x="561" d="M19 -369l33 123q30 -11 57.5 -18.5t61.5 -7.5q61 0 88 24t27 66q0 49 -35 92.5t-94 89.5l91 67q105 -52 157 -123.5t52 -147.5q0 -99 -66.5 -154t-168.5 -55q-68 0 -116 12.5t-87 31.5z" />
+<glyph horiz-adv-x="516" d="M-66 -419l14 160q14 -5 46 -8.5t51 -3.5q60 0 94 47t34 135v243h197v-243q0 -167 -86 -257.5t-239 -90.5q-31 0 -56.5 4.5t-54.5 13.5z" />
+<glyph horiz-adv-x="780" d="M-96 715v165h279q235 0 383 -128t148 -348q-2 -138 -99.5 -279t-287.5 -175l-51 148q128 34 184 112.5t56 193.5q-1 147 -92 229t-241 82h-279z" />
+<glyph horiz-adv-x="775" d="M59 1260v142l495 54v-1456h-197v1264z" />
+<glyph horiz-adv-x="1151" d="M96 1033q-5 188 125 316t360 128q196 0 312.5 -114.5t116.5 -291.5q0 -119 -70.5 -238.5t-197.5 -256.5l-383 -417l2 -5h700v-154h-943v135l477 530q128 143 173 227t45 172q0 109 -63.5 183.5t-168.5 74.5q-151 0 -222.5 -77.5t-71.5 -217.5h-189z" />
+<glyph horiz-adv-x="1195" d="M121 378l3 6h188q0 -115 70.5 -183t193.5 -68q134 0 210.5 68t76.5 201q0 135 -68 199t-214 64h-172v154h172q142 0 201 65t59 183q0 125 -67 190t-198 65q-115 0 -184.5 -67.5t-69.5 -179.5h-189l-2 6q-5 165 120 280.5t325 115.5q211 0 336.5 -107.5t125.5 -306.5 q0 -90 -57 -179.5t-171 -136.5q137 -43 193.5 -135t56.5 -206q0 -199 -136.5 -313t-347.5 -114q-199 0 -329.5 107.5t-125.5 291.5z" />
+<glyph horiz-adv-x="1183" d="M70 336v111l642 1009h208v-966h201v-154h-201v-336h-196v336h-654zM280 490h444v699l-6 1l-19 -47z" />
+<glyph horiz-adv-x="1183" d="M172 377l2 6h179q0 -119 68 -184.5t177 -65.5q125 0 194 88t69 241q0 141 -70 230.5t-193 89.5q-116 0 -168 -35t-76 -107l-164 17l84 799h729v-175h-562l-48 -409q46 34 102.5 56.5t130.5 24.5q201 2 316.5 -131t115.5 -358q0 -219 -117.5 -352t-342.5 -133 q-185 0 -308 101t-118 297z" />
+<glyph horiz-adv-x="1183" d="M147 571v278q0 280 156 454t387 174q75 0 148.5 -17t121.5 -43l-42 -151q-49 25 -102.5 40.5t-125.5 15.5q-156 0 -251.5 -125t-95.5 -326v-23q64 56 146.5 87.5t177.5 31.5q195 0 311 -135t116 -342q0 -226 -123.5 -368.5t-329.5 -142.5q-214 0 -354 155t-140 437z M343 552q0 -201 85 -310t213 -109q121 0 188.5 102.5t67.5 254.5q0 144 -72.5 237t-201.5 93q-101 0 -172 -41t-108 -109v-118z" />
+<glyph horiz-adv-x="1025" d="M30 1301v155h944v-155q-243 -315 -328 -557.5t-122 -586.5l-16 -157h-197l16 157q39 344 150.5 615t303.5 529h-751z" />
+<glyph horiz-adv-x="1237" d="M125 394q0 124 76.5 217.5t208.5 137.5q-114 41 -179 127t-65 200q0 192 124 296.5t327 104.5q201 0 327.5 -104.5t126.5 -296.5q0 -114 -66.5 -199.5t-180.5 -127.5q131 -44 209.5 -138t78.5 -217q0 -202 -137 -308.5t-356 -106.5q-223 0 -358.5 106.5t-135.5 308.5z M322 398q0 -124 81 -194.5t216 -70.5q131 0 213.5 71t82.5 194q0 119 -85 196.5t-213 77.5q-131 0 -213 -76.5t-82 -197.5zM363 1072q0 -111 70.5 -178t185.5 -67q113 0 184 67t71 178q0 108 -72.5 179t-184.5 71q-114 0 -184 -68.5t-70 -181.5z" />
+<glyph horiz-adv-x="1183" d="M98 978q0 219 131.5 359t319.5 140q228 0 359.5 -142.5t131.5 -419.5v-347q0 -285 -142.5 -437t-371.5 -152q-77 0 -156.5 14.5t-142.5 44.5l30 151q59 -31 122.5 -43.5t146.5 -12.5q144 0 230.5 109t86.5 324v66q-49 -71 -122.5 -107.5t-163.5 -36.5q-211 0 -335 130.5 t-124 359.5zM295 978q0 -150 70.5 -243t191.5 -93q109 0 181.5 47t104.5 120v126q0 191 -73.5 289t-214.5 98q-108 0 -184 -96.5t-76 -247.5z" />
+<glyph horiz-adv-x="1145" d="M153 0v1165h466q203 0 319.5 -104t116.5 -269q0 -166 -116.5 -269t-319.5 -103h-269v-420h-197zM350 574h269q117 0 177.5 63t60.5 153q0 92 -60.5 157t-177.5 65h-269v-438z" />
+<glyph horiz-adv-x="1055" d="M95 301l1 6l189 14q0 -83 61.5 -134.5t160.5 -51.5q118 0 175 62t57 172q0 107 -55.5 169.5t-156.5 62.5q-102 0 -151.5 -28.5t-73.5 -81.5l-167 13l71 661h678v-164h-507l-33 -310q37 25 94 43.5t113 20.5q181 3 283 -98t102 -286q0 -178 -105 -283t-324 -105 q-178 0 -297.5 80.5t-114.5 237.5z" />
+<glyph horiz-adv-x="892" d="M120 294v214q0 135 102.5 219.5t255.5 84.5q53 0 107 -9.5t97 -25.5l-30 -127q-39 16 -80 23.5t-92 7.5q-83 0 -135.5 -47t-52.5 -125v-66q36 34 86.5 53t113.5 19q132 0 206 -70t74 -192q0 -118 -91 -191t-235 -73q-141 0 -233.5 85t-92.5 220zM292 294q0 -78 43 -126.5 t111 -48.5q71 0 113 37.5t42 96.5q0 63 -37 98t-111 35q-64 0 -105.5 -22t-55.5 -60v-10z" />
+<glyph horiz-adv-x="892" d="M120 205l1 6l162 10q0 -48 41 -75t109 -27q78 0 116 34.5t38 100.5t-38.5 106.5t-105.5 40.5q-65 0 -98.5 -17t-48.5 -47l-150 9l52 455h516v-133h-363l-26 -185q30 17 69.5 29.5t81.5 13.5q132 2 207 -70.5t75 -200.5q0 -122 -79.5 -194t-245.5 -72q-137 0 -228 55 t-85 161z" />
+<glyph horiz-adv-x="916" d="M87 254l422 547h173v-519h126v-130h-126v-152h-170v152h-417zM269 282h243v310l-6 1l-13 -22z" />
+<glyph horiz-adv-x="876" d="M112 216l1 6h163q0 -46 37.5 -74.5t100.5 -28.5q72 0 114 29.5t42 77.5q0 62 -36.5 90.5t-109.5 28.5h-132v126h132q67 0 99.5 28.5t32.5 80.5q0 43 -36.5 72t-105.5 29q-56 0 -90.5 -24t-34.5 -64h-162l-2 6q-6 94 78.5 153.5t210.5 59.5q145 0 229 -59.5t84 -169.5 q0 -55 -35.5 -100.5t-97.5 -71.5q70 -23 108 -71t38 -116q0 -111 -90 -173t-236 -62q-127 0 -217.5 58t-84.5 169z" />
+<glyph horiz-adv-x="859" d="M119 573q-6 99 78 169t225 70q135 0 211 -64t76 -180q0 -80 -44.5 -136t-160.5 -161l-153 -135l2 -6h361v-130h-592v130l302 262q69 60 91 97.5t22 79.5q0 50 -28.5 81t-86.5 31q-67 0 -103.5 -32t-36.5 -82h-161z" />
+<glyph horiz-adv-x="696" d="M155 1249q0 72 51 119.5t124 47.5q70 0 120 -47.5t50 -119.5t-49.5 -118t-120.5 -46q-73 0 -124 46t-51 118zM243 1249q0 -35 25.5 -59.5t61.5 -24.5q34 0 58.5 24t24.5 60q0 37 -24.5 62.5t-58.5 25.5q-36 0 -61.5 -25.5t-25.5 -62.5zM283 1465l144 185h199l2 -6 l-216 -179h-129z" />
+<glyph horiz-adv-x="557" d="M95 655v134l301 23v-812h-174v655h-127z" />
+<glyph horiz-adv-x="933" d="M120 283v235q0 134 93 214t245 80t246 -80t94 -214v-235q0 -136 -93.5 -215t-244.5 -79q-153 0 -246.5 79t-93.5 215zM292 283q0 -78 44.5 -121t123.5 -43q77 0 121 43t44 121v236q0 76 -44.5 119t-122.5 43t-122 -43t-44 -119v-236z" />
+<glyph horiz-adv-x="1064" d="M71 790q0 166 120 278.5t310 112.5q185 0 306 -124.5t121 -319.5v-343q0 -181 -128 -296t-322 -115q-68 0 -142 13t-141 37l31 149q60 -26 118.5 -36.5t133.5 -10.5q108 0 180.5 74t72.5 184v117q-45 -50 -108.5 -76t-135.5 -26q-195 0 -305.5 103.5t-110.5 278.5z M269 790q0 -102 58 -169t167 -67q88 0 150 37t87 91v55q0 124 -66.5 207.5t-165.5 83.5q-102 0 -166 -73t-64 -165z" />
+<glyph horiz-adv-x="1072" d="M88 327q0 94 61.5 166.5t167.5 110.5q-91 37 -143 103t-52 153q0 153 116.5 237t296.5 84q172 0 285.5 -84t113.5 -237q0 -87 -51 -153t-137 -103q102 -39 162.5 -111t60.5 -166q0 -162 -123.5 -253t-308.5 -91q-194 0 -321.5 91t-127.5 253zM285 331q0 -87 72.5 -141.5 t179.5 -54.5q98 0 166 54.5t68 141.5q0 84 -69.5 139.5t-166.5 55.5q-105 0 -177.5 -55.5t-72.5 -139.5zM319 856q0 -77 62.5 -126.5t155.5 -49.5q83 0 141 49.5t58 126.5q0 74 -59.5 123t-141.5 49q-93 0 -154.5 -47t-61.5 -125z" />
+<glyph horiz-adv-x="957" d="M71 1012v153h800v-153q-189 -232 -270.5 -392t-81.5 -435v-185h-197v185q0 268 115.5 471t257.5 356h-624z" />
+<glyph horiz-adv-x="785" d="M95 670v131h589v-131q-134 -158 -189.5 -259.5t-55.5 -283.5v-127h-172v127q0 181 77.5 320.5t166.5 222.5h-416z" />
+<glyph horiz-adv-x="876" d="M134 1450l2 6h151q0 -66 34 -107t108 -41q72 0 107 41.5t35 106.5h151l2 -6q4 -116 -77 -189t-218 -73q-138 0 -219 73t-76 189z" />
+<glyph horiz-adv-x="1194" d="M-10 517v155h641v-155h-641zM153 0v1165h421q211 0 355 -134.5t144 -343.5v-210q0 -210 -144 -343.5t-355 -133.5h-421zM350 152h224q126 0 214 93t88 232v211q0 137 -88 230.5t-214 93.5h-224v-860z" />
+<glyph horiz-adv-x="1194" d="M-10 517v155h641v-155h-641zM153 0v1165h421q211 0 355 -134.5t144 -343.5v-210q0 -210 -144 -343.5t-355 -133.5h-421zM350 152h224q126 0 214 93t88 232v211q0 137 -88 230.5t-214 93.5h-224v-860z" />
+<glyph horiz-adv-x="1072" d="M71 1012v153h906v-153h-357v-1012h-197v1012h-352zM191 642v155h641v-155h-641z" />
+<glyph horiz-adv-x="1210" d="M39 0l469 1165h186l468 -1165h-203l-104 268h-509l-103 -268h-204zM272 1497l3 6h230l175 -266h-158zM405 422h391l-193 498h-6z" />
+<glyph horiz-adv-x="1210" d="M39 0l469 1165h186l468 -1165h-203l-104 268h-509l-103 -268h-204zM405 422h391l-193 498h-6zM507 1233l185 266h230l2 -6l-270 -260h-147z" />
+<glyph horiz-adv-x="1210" d="M39 0l469 1165h186l468 -1165h-203l-104 268h-509l-103 -268h-204zM291 1278v26l246 237h120l248 -238v-25h-161l-147 148l-146 -148h-160zM405 422h391l-193 498h-6z" />
+<glyph horiz-adv-x="1210" d="M39 0l469 1165h186l468 -1165h-203l-104 268h-509l-103 -268h-204zM250 1305q0 93 59 161.5t150 68.5q56 0 140 -47t136 -47q41 0 71 32.5t30 79.5l108 -32q0 -94 -59.5 -159t-149.5 -65q-71 0 -148 46.5t-128 46.5q-43 0 -72 -32.5t-29 -78.5zM405 422h391l-193 498h-6z " />
+<glyph horiz-adv-x="1210" d="M39 0l469 1165h186l468 -1165h-203l-104 268h-509l-103 -268h-204zM253 1282v200h219v-200h-219zM405 422h391l-193 498h-6zM723 1282v200h219v-200h-219z" />
+<glyph horiz-adv-x="1210" d="M39 0l469 1165h186l468 -1165h-203l-104 268h-509l-103 -268h-204zM388 1411q0 84 60.5 141t147.5 57q85 0 145 -56.5t60 -141.5q0 -86 -59.5 -140t-145.5 -54q-87 0 -147.5 54t-60.5 140zM405 422h391l-193 498h-6zM491 1411q0 -43 31 -73.5t74 -30.5q42 0 72 29.5 t30 74.5t-30 76t-72 31q-43 0 -74 -31t-31 -76z" />
+<glyph horiz-adv-x="1210" d="M39 0l469 1165h186l468 -1165h-203l-104 268h-509l-103 -268h-204zM405 422h391l-193 498h-6zM425 1361q0 72 51 119.5t124 47.5q70 0 120 -47.5t50 -119.5t-49.5 -118t-120.5 -46q-73 0 -124 46t-51 118zM513 1361q0 -35 25.5 -59.5t61.5 -24.5q34 0 58.5 24t24.5 60 q0 37 -24.5 62.5t-58.5 25.5q-36 0 -61.5 -25.5t-25.5 -62.5zM553 1577l144 185h199l2 -6l-216 -179h-129z" />
+<glyph horiz-adv-x="1170" d="M112 461v243q0 209 138.5 343t345.5 134q212 0 339 -101.5t122 -288.5l-2 -6h-189q0 121 -71 182t-199 61q-123 0 -205 -93t-82 -230v-244q0 -139 82 -232.5t205 -93.5q127 0 198 61t71 185h189l2 -6q5 -189 -124.5 -290.5t-335.5 -101.5q-207 0 -345.5 134t-138.5 344z M484 -331q72 0 116 24.5t44 73.5q0 48 -36 67t-123 26l32 135h140l-12 -52q65 -11 108 -52t43 -121q0 -96 -79 -153t-226 -57z" />
+<glyph horiz-adv-x="1095" d="M153 0v1165h815v-153h-618v-328h531v-154h-531v-378h618v-152h-815zM220 1497l3 6h230l175 -266h-158z" />
+<glyph horiz-adv-x="1095" d="M153 0v1165h815v-153h-618v-328h531v-154h-531v-378h618v-152h-815zM455 1233l185 266h230l2 -6l-270 -260h-147z" />
+<glyph horiz-adv-x="1095" d="M153 0v1165h815v-153h-618v-328h531v-154h-531v-378h618v-152h-815zM239 1278v26l246 237h120l248 -238v-25h-161l-147 148l-146 -148h-160z" />
+<glyph horiz-adv-x="1095" d="M153 0v1165h815v-153h-618v-328h531v-154h-531v-378h618v-152h-815zM201 1282v200h219v-200h-219zM671 1282v200h219v-200h-219z" />
+<glyph horiz-adv-x="515" d="M-73 1497l3 6h230l175 -266h-158zM153 0v1165h196v-1165h-196z" />
+<glyph horiz-adv-x="515" d="M153 0v1165h196v-1165h-196zM160 1233l185 266h230l2 -6l-270 -260h-147z" />
+<glyph horiz-adv-x="515" d="M-54 1278v26l246 237h120l248 -238v-25h-161l-147 148l-146 -148h-160zM153 0v1165h196v-1165h-196z" />
+<glyph horiz-adv-x="515" d="M-92 1282v200h219v-200h-219zM153 0v1165h196v-1165h-196zM378 1282v200h219v-200h-219z" />
+<glyph horiz-adv-x="1308" d="M153 0v1165h197l590 -859l6 2v857h196v-1165h-196l-590 859l-6 -2v-857h-197zM281 1305q0 93 59 161.5t150 68.5q56 0 140 -47t136 -47q41 0 71 32.5t30 79.5l108 -32q0 -94 -59.5 -159t-149.5 -65q-71 0 -148 46.5t-128 46.5q-43 0 -72 -32.5t-29 -78.5z" />
+<glyph horiz-adv-x="1227" d="M112 461v243q0 212 138.5 344.5t361.5 132.5q224 0 363.5 -132.5t139.5 -344.5v-243q0 -214 -138.5 -346t-362.5 -132q-223 0 -362.5 132.5t-139.5 345.5zM272 1513l3 6h230l175 -266h-158zM309 461q0 -154 81.5 -240t223.5 -86t223 86t81 240v244q0 151 -82 237t-224 86 q-141 0 -222 -86t-81 -237v-244z" />
+<glyph horiz-adv-x="1227" d="M112 461v243q0 212 138.5 344.5t361.5 132.5q224 0 363.5 -132.5t139.5 -344.5v-243q0 -214 -138.5 -346t-362.5 -132q-223 0 -362.5 132.5t-139.5 345.5zM309 461q0 -154 81.5 -240t223.5 -86t223 86t81 240v244q0 151 -82 237t-224 86q-141 0 -222 -86t-81 -237v-244z M507 1249l185 266h230l2 -6l-270 -260h-147z" />
+<glyph horiz-adv-x="1227" d="M112 461v243q0 212 138.5 344.5t361.5 132.5q224 0 363.5 -132.5t139.5 -344.5v-243q0 -214 -138.5 -346t-362.5 -132q-223 0 -362.5 132.5t-139.5 345.5zM291 1294v26l246 237h120l248 -238v-25h-161l-147 148l-146 -148h-160zM309 461q0 -154 81.5 -240t223.5 -86 t223 86t81 240v244q0 151 -82 237t-224 86q-141 0 -222 -86t-81 -237v-244z" />
+<glyph horiz-adv-x="1227" d="M112 461v243q0 212 138.5 344.5t361.5 132.5q224 0 363.5 -132.5t139.5 -344.5v-243q0 -214 -138.5 -346t-362.5 -132q-223 0 -362.5 132.5t-139.5 345.5zM250 1321q0 93 59 161.5t150 68.5q56 0 140 -47t136 -47q41 0 71 32.5t30 79.5l108 -32q0 -94 -59.5 -159 t-149.5 -65q-71 0 -148 46.5t-128 46.5q-43 0 -72 -32.5t-29 -78.5zM309 461q0 -154 81.5 -240t223.5 -86t223 86t81 240v244q0 151 -82 237t-224 86q-141 0 -222 -86t-81 -237v-244z" />
+<glyph horiz-adv-x="1227" d="M112 461v243q0 212 138.5 344.5t361.5 132.5q224 0 363.5 -132.5t139.5 -344.5v-243q0 -214 -138.5 -346t-362.5 -132q-223 0 -362.5 132.5t-139.5 345.5zM253 1298v200h219v-200h-219zM309 461q0 -154 81.5 -240t223.5 -86t223 86t81 240v244q0 151 -82 237t-224 86 q-141 0 -222 -86t-81 -237v-244zM723 1298v200h219v-200h-219z" />
+<glyph horiz-adv-x="1284" d="M137 398v767h196v-767q0 -123 84.5 -193t220.5 -70q137 0 221.5 69.5t84.5 193.5v767h196v-767q0 -195 -139.5 -305t-362.5 -110q-221 0 -361 110t-140 305zM301 1498l3 6h230l175 -266h-158z" />
+<glyph horiz-adv-x="1284" d="M137 398v767h196v-767q0 -123 84.5 -193t220.5 -70q137 0 221.5 69.5t84.5 193.5v767h196v-767q0 -195 -139.5 -305t-362.5 -110q-221 0 -361 110t-140 305zM536 1234l185 266h230l2 -6l-270 -260h-147z" />
+<glyph horiz-adv-x="1284" d="M137 398v767h196v-767q0 -123 84.5 -193t220.5 -70q137 0 221.5 69.5t84.5 193.5v767h196v-767q0 -195 -139.5 -305t-362.5 -110q-221 0 -361 110t-140 305zM320 1279v26l246 237h120l248 -238v-25h-161l-147 148l-146 -148h-160z" />
+<glyph horiz-adv-x="1284" d="M137 398v767h196v-767q0 -123 84.5 -193t220.5 -70q137 0 221.5 69.5t84.5 193.5v767h196v-767q0 -195 -139.5 -305t-362.5 -110q-221 0 -361 110t-140 305zM282 1283v200h219v-200h-219zM752 1283v200h219v-200h-219z" />
+<glyph horiz-adv-x="1121" d="M30 1165h221l302 -576l303 576h221l-428 -755v-410h-197v419zM457 1232l185 266h230l2 -6l-270 -260h-147z" />
+<glyph horiz-adv-x="1210" d="M39 0l469 1165h186l468 -1165h-203l-104 268h-509l-103 -268h-204zM242 1317v146h721v-146h-721zM405 422h391l-193 498h-6z" />
+<glyph horiz-adv-x="1210" d="M39 0l469 1165h186l468 -1165h-203l-104 268h-509l-103 -268h-204zM303 1541l2 6h151q0 -66 34 -107t108 -41q72 0 107 41.5t35 106.5h151l2 -6q4 -116 -77 -189t-218 -73q-138 0 -219 73t-76 189zM405 422h391l-193 498h-6z" />
+<glyph horiz-adv-x="1210" d="M39 0l469 1165h186l468 -1165h-203l-104 268h-509l-103 -268h-204zM405 422h391l-193 498h-6zM814 -223q0 80 60.5 152t187.5 128l72 -57q-70 -52 -109.5 -99.5t-39.5 -101.5q0 -42 22.5 -66t73.5 -24q27 0 50 7.5t49 18.5l33 -123q-36 -19 -79.5 -31.5t-103.5 -12.5 q-95 0 -155.5 55t-60.5 154z" />
+<glyph horiz-adv-x="1170" d="M112 461v243q0 209 138.5 343t345.5 134q212 0 339 -101.5t122 -288.5l-2 -6h-189q0 121 -71 182t-199 61q-123 0 -205 -93t-82 -230v-244q0 -139 82 -232.5t205 -93.5q127 0 198 61t71 185h189l2 -6q5 -189 -124.5 -290.5t-335.5 -101.5q-207 0 -345.5 134t-138.5 344z M491 1249l185 266h230l2 -6l-270 -260h-147z" />
+<glyph horiz-adv-x="1170" d="M112 461v243q0 209 138.5 343t345.5 134q212 0 339 -101.5t122 -288.5l-2 -6h-189q0 121 -71 182t-199 61q-123 0 -205 -93t-82 -230v-244q0 -139 82 -232.5t205 -93.5q127 0 198 61t71 185h189l2 -6q5 -189 -124.5 -290.5t-335.5 -101.5q-207 0 -345.5 134t-138.5 344z M275 1294v26l246 237h120l248 -238v-25h-161l-147 148l-146 -148h-160z" />
+<glyph horiz-adv-x="1170" d="M112 461v243q0 209 138.5 343t345.5 134q212 0 339 -101.5t122 -288.5l-2 -6h-189q0 121 -71 182t-199 61q-123 0 -205 -93t-82 -230v-244q0 -139 82 -232.5t205 -93.5q127 0 198 61t71 185h189l2 -6q5 -189 -124.5 -290.5t-335.5 -101.5q-207 0 -345.5 134t-138.5 344z M472 1297v201h218v-201h-218z" />
+<glyph horiz-adv-x="1170" d="M112 461v243q0 209 138.5 343t345.5 134q212 0 339 -101.5t122 -288.5l-2 -6h-189q0 121 -71 182t-199 61q-123 0 -205 -93t-82 -230v-244q0 -139 82 -232.5t205 -93.5q127 0 198 61t71 185h189l2 -6q5 -189 -124.5 -290.5t-335.5 -101.5q-207 0 -345.5 134t-138.5 344z M267 1538v20h166l147 -148l147 148h170v-18l-257 -245h-119z" />
+<glyph horiz-adv-x="1194" d="M153 0v1165h421q211 0 355 -134.5t144 -343.5v-210q0 -210 -144 -343.5t-355 -133.5h-421zM184 1522v20h166l147 -148l147 148h170v-18l-257 -245h-119zM350 152h224q126 0 214 93t88 232v211q0 137 -88 230.5t-214 93.5h-224v-860z" />
+<glyph horiz-adv-x="1095" d="M153 0v1165h815v-153h-618v-328h531v-154h-531v-378h618v-152h-815zM190 1317v146h721v-146h-721z" />
+<glyph horiz-adv-x="1095" d="M153 0v1165h815v-153h-618v-328h531v-154h-531v-378h618v-152h-815zM251 1541l2 6h151q0 -66 34 -107t108 -41q72 0 107 41.5t35 106.5h151l2 -6q4 -116 -77 -189t-218 -73q-138 0 -219 73t-76 189z" />
+<glyph horiz-adv-x="1095" d="M153 0v1165h815v-153h-618v-328h531v-154h-531v-378h618v-152h-815zM436 1281v201h218v-201h-218z" />
+<glyph horiz-adv-x="1095" d="M153 0v1165h815v-153h-618v-328h531v-154h-531v-378h618v-152h-815zM348 -223q0 80 60.5 152t187.5 128l72 -57q-70 -52 -109.5 -99.5t-39.5 -101.5q0 -42 22.5 -66t73.5 -24q27 0 50 7.5t49 18.5l33 -123q-36 -19 -79.5 -31.5t-103.5 -12.5q-95 0 -155.5 55t-60.5 154z " />
+<glyph horiz-adv-x="1095" d="M153 0v1165h815v-153h-618v-328h531v-154h-531v-378h618v-152h-815zM231 1522v20h166l147 -148l147 148h170v-18l-257 -245h-119z" />
+<glyph horiz-adv-x="1235" d="M112 461v243q0 211 145 344t370 133q222 0 343.5 -100.5t117.5 -257.5l-2 -6h-188q0 101 -72.5 156t-198.5 55q-140 0 -229 -92t-89 -231v-244q0 -142 88 -234t234 -92q105 0 173.5 21t99.5 48v250h-258v154h453v-451q-45 -65 -166 -119.5t-302 -54.5q-231 0 -375 132.5 t-144 345.5zM287 1294v26l246 237h120l248 -238v-25h-161l-147 148l-146 -148h-160z" />
+<glyph horiz-adv-x="1235" d="M112 461v243q0 211 145 344t370 133q222 0 343.5 -100.5t117.5 -257.5l-2 -6h-188q0 101 -72.5 156t-198.5 55q-140 0 -229 -92t-89 -231v-244q0 -142 88 -234t234 -92q105 0 173.5 21t99.5 48v250h-258v154h453v-451q-45 -65 -166 -119.5t-302 -54.5q-231 0 -375 132.5 t-144 345.5zM299 1557l2 6h151q0 -66 34 -107t108 -41q72 0 107 41.5t35 106.5h151l2 -6q4 -116 -77 -189t-218 -73q-138 0 -219 73t-76 189z" />
+<glyph horiz-adv-x="1235" d="M112 461v243q0 211 145 344t370 133q222 0 343.5 -100.5t117.5 -257.5l-2 -6h-188q0 101 -72.5 156t-198.5 55q-140 0 -229 -92t-89 -231v-244q0 -142 88 -234t234 -92q105 0 173.5 21t99.5 48v250h-258v154h453v-451q-45 -65 -166 -119.5t-302 -54.5q-231 0 -375 132.5 t-144 345.5zM484 1297v201h218v-201h-218z" />
+<glyph horiz-adv-x="1235" d="M112 461v243q0 211 145 344t370 133q222 0 343.5 -100.5t117.5 -257.5l-2 -6h-188q0 101 -72.5 156t-198.5 55q-140 0 -229 -92t-89 -231v-244q0 -142 88 -234t234 -92q105 0 173.5 21t99.5 48v250h-258v154h453v-451q-45 -65 -166 -119.5t-302 -54.5q-231 0 -375 132.5 t-144 345.5zM446 -491l61 246v131h158v-140l-122 -237h-97z" />
+<glyph horiz-adv-x="1275" d="M153 0v1165h197v-521h566v521h198v-1165h-198v491h-566v-491h-197zM298 1278v26l246 237h120l248 -238v-25h-161l-147 148l-146 -148h-160z" />
+<glyph horiz-adv-x="515" d="M-95 1305q0 93 59 161.5t150 68.5q56 0 140 -47t136 -47q41 0 71 32.5t30 79.5l108 -32q0 -94 -59.5 -159t-149.5 -65q-71 0 -148 46.5t-128 46.5q-43 0 -72 -32.5t-29 -78.5zM153 0v1165h196v-1165h-196z" />
+<glyph horiz-adv-x="1284" d="M137 398v767h196v-767q0 -123 84.5 -193t220.5 -70q137 0 221.5 69.5t84.5 193.5v767h196v-767q0 -195 -139.5 -305t-362.5 -110q-221 0 -361 110t-140 305zM390 1279l184 266h211l2 -5l-240 -261h-157zM659 1284l241 261h229l3 -6l-300 -260h-171z" />
+<glyph horiz-adv-x="515" d="M-42 1541l2 6h151q0 -66 34 -107t108 -41q72 0 107 41.5t35 106.5h151l2 -6q4 -116 -77 -189t-218 -73q-138 0 -219 73t-76 189zM153 0v1165h196v-1165h-196z" />
+<glyph horiz-adv-x="515" d="M60 -223q0 80 60.5 152t187.5 128l72 -57q-70 -52 -109.5 -99.5t-39.5 -101.5q0 -42 22.5 -66t73.5 -24q27 0 50 7.5t49 18.5l33 -123q-36 -19 -79.5 -31.5t-103.5 -12.5q-95 0 -155.5 55t-60.5 154zM153 0v1165h196v-1165h-196z" />
+<glyph horiz-adv-x="515" d="M143 1281v201h218v-201h-218zM153 0v1165h196v-1165h-196z" />
+<glyph horiz-adv-x="1039" d="M70 331l2 6h188q0 -101 59 -151.5t166 -50.5q88 0 147 60.5t59 158.5v811h196v-811q0 -170 -113.5 -270.5t-288.5 -100.5q-195 0 -308 89t-107 259zM476 1269v26l246 237h120l248 -238v-25h-161l-147 148l-146 -148h-160z" />
+<glyph horiz-adv-x="1121" d="M153 0v1165h197v-508h84l388 508h231l3 -5l-455 -554l488 -601l-3 -5h-241l-396 500h-99v-500h-197zM363 -479l61 246v131h158v-140l-122 -237h-97z" />
+<glyph horiz-adv-x="957" d="M107 1185l185 266h230l2 -6l-270 -260h-147zM153 0v1165h197v-1013h525v-152h-722z" />
+<glyph horiz-adv-x="957" d="M153 0v1165h197v-1013h525v-152h-722zM328 -477l61 246v131h158v-140l-122 -237h-97z" />
+<glyph horiz-adv-x="957" d="M153 0v1165h197v-1013h525v-152h-722zM432 789l61 246v131h158v-140l-122 -237h-97z" />
+<glyph horiz-adv-x="957" d="M153 0v1165h197v-1013h525v-152h-722zM465 529v201h218v-201h-218z" />
+<glyph horiz-adv-x="1308" d="M153 0v1165h197l590 -859l6 2v857h196v-1165h-196l-590 859l-6 -2v-857h-197zM538 1233l185 266h230l2 -6l-270 -260h-147z" />
+<glyph horiz-adv-x="1308" d="M153 0v1165h197l590 -859l6 2v857h196v-1165h-196l-590 859l-6 -2v-857h-197zM480 -477l61 246v131h158v-140l-122 -237h-97z" />
+<glyph horiz-adv-x="1308" d="M153 0v1165h197l590 -859l6 2v857h196v-1165h-196l-590 859l-6 -2v-857h-197zM314 1522v20h166l147 -148l147 148h170v-18l-257 -245h-119z" />
+<glyph horiz-adv-x="1227" d="M112 461v243q0 212 138.5 344.5t361.5 132.5q224 0 363.5 -132.5t139.5 -344.5v-243q0 -214 -138.5 -346t-362.5 -132q-223 0 -362.5 132.5t-139.5 345.5zM242 1333v146h721v-146h-721zM309 461q0 -154 81.5 -240t223.5 -86t223 86t81 240v244q0 151 -82 237t-224 86 q-141 0 -222 -86t-81 -237v-244z" />
+<glyph horiz-adv-x="1227" d="M112 461v243q0 212 138.5 344.5t361.5 132.5q224 0 363.5 -132.5t139.5 -344.5v-243q0 -214 -138.5 -346t-362.5 -132q-223 0 -362.5 132.5t-139.5 345.5zM303 1557l2 6h151q0 -66 34 -107t108 -41q72 0 107 41.5t35 106.5h151l2 -6q4 -116 -77 -189t-218 -73 q-138 0 -219 73t-76 189zM309 461q0 -154 81.5 -240t223.5 -86t223 86t81 240v244q0 151 -82 237t-224 86q-141 0 -222 -86t-81 -237v-244z" />
+<glyph horiz-adv-x="1227" d="M112 461v243q0 212 138.5 344.5t361.5 132.5q224 0 363.5 -132.5t139.5 -344.5v-243q0 -214 -138.5 -346t-362.5 -132q-223 0 -362.5 132.5t-139.5 345.5zM309 461q0 -154 81.5 -240t223.5 -86t223 86t81 240v244q0 151 -82 237t-224 86q-141 0 -222 -86t-81 -237v-244z M361 1294l184 266h211l2 -5l-240 -261h-157zM630 1299l241 261h229l3 -6l-300 -260h-171z" />
+<glyph horiz-adv-x="1197" d="M153 0v1165h461q205 0 317.5 -90t112.5 -252q0 -89 -49.5 -152t-145.5 -102q104 -30 149.5 -102t45.5 -177v-118q0 -45 5.5 -88t18.5 -65v-19h-203q-12 23 -15 72t-3 101v116q0 90 -52 140t-150 50h-295v-479h-197zM350 633h264q120 0 176 47t56 135q0 92 -56.5 144.5 t-175.5 52.5h-264v-379zM424 1233l185 266h230l2 -6l-270 -260h-147z" />
+<glyph horiz-adv-x="1197" d="M153 0v1165h461q205 0 317.5 -90t112.5 -252q0 -89 -49.5 -152t-145.5 -102q104 -30 149.5 -102t45.5 -177v-118q0 -45 5.5 -88t18.5 -65v-19h-203q-12 23 -15 72t-3 101v116q0 90 -52 140t-150 50h-295v-479h-197zM350 633h264q120 0 176 47t56 135q0 92 -56.5 144.5 t-175.5 52.5h-264v-379zM366 -477l61 246v131h158v-140l-122 -237h-97z" />
+<glyph horiz-adv-x="1197" d="M153 0v1165h461q205 0 317.5 -90t112.5 -252q0 -89 -49.5 -152t-145.5 -102q104 -30 149.5 -102t45.5 -177v-118q0 -45 5.5 -88t18.5 -65v-19h-203q-12 23 -15 72t-3 101v116q0 90 -52 140t-150 50h-295v-479h-197zM200 1522v20h166l147 -148l147 148h170v-18l-257 -245 h-119zM350 633h264q120 0 176 47t56 135q0 92 -56.5 144.5t-175.5 52.5h-264v-379z" />
+<glyph horiz-adv-x="1137" d="M99 337l1 6h188q0 -108 81.5 -158t199.5 -50q131 0 203 47t72 122q0 71 -62 115t-224 84q-223 58 -324.5 132.5t-101.5 224.5q0 147 121.5 234t327.5 87q210 0 327.5 -93t112.5 -261l-2 -6h-187q0 92 -66 149.5t-185 57.5q-125 0 -188.5 -46.5t-63.5 -120.5 q0 -73 57.5 -113.5t235.5 -83.5q215 -58 317 -136t102 -223q0 -154 -127 -238t-345 -84q-202 0 -339 85t-131 269zM467 1249l185 266h230l2 -6l-270 -260h-147z" />
+<glyph horiz-adv-x="1137" d="M99 337l1 6h188q0 -108 81.5 -158t199.5 -50q131 0 203 47t72 122q0 71 -62 115t-224 84q-223 58 -324.5 132.5t-101.5 224.5q0 147 121.5 234t327.5 87q210 0 327.5 -93t112.5 -261l-2 -6h-187q0 92 -66 149.5t-185 57.5q-125 0 -188.5 -46.5t-63.5 -120.5 q0 -73 57.5 -113.5t235.5 -83.5q215 -58 317 -136t102 -223q0 -154 -127 -238t-345 -84q-202 0 -339 85t-131 269zM251 1294v26l246 237h120l248 -238v-25h-161l-147 148l-146 -148h-160z" />
+<glyph horiz-adv-x="1137" d="M99 337l1 6h188q0 -108 81.5 -158t199.5 -50q131 0 203 47t72 122q0 71 -62 115t-224 84q-223 58 -324.5 132.5t-101.5 224.5q0 147 121.5 234t327.5 87q210 0 327.5 -93t112.5 -261l-2 -6h-187q0 92 -66 149.5t-185 57.5q-125 0 -188.5 -46.5t-63.5 -120.5 q0 -73 57.5 -113.5t235.5 -83.5q215 -58 317 -136t102 -223q0 -154 -127 -238t-345 -84q-202 0 -339 85t-131 269zM460 -331q72 0 116 24.5t44 73.5q0 48 -36 67t-123 26l32 135h140l-12 -52q65 -11 108 -52t43 -121q0 -96 -79 -153t-226 -57z" />
+<glyph horiz-adv-x="1137" d="M99 337l1 6h188q0 -108 81.5 -158t199.5 -50q131 0 203 47t72 122q0 71 -62 115t-224 84q-223 58 -324.5 132.5t-101.5 224.5q0 147 121.5 234t327.5 87q210 0 327.5 -93t112.5 -261l-2 -6h-187q0 92 -66 149.5t-185 57.5q-125 0 -188.5 -46.5t-63.5 -120.5 q0 -73 57.5 -113.5t235.5 -83.5q215 -58 317 -136t102 -223q0 -154 -127 -238t-345 -84q-202 0 -339 85t-131 269zM243 1538v20h166l147 -148l147 148h170v-18l-257 -245h-119z" />
+<glyph horiz-adv-x="1072" d="M71 1012v153h906v-153h-357v-1012h-197v1012h-352zM367 -477l61 246v131h158v-140l-122 -237h-97z" />
+<glyph horiz-adv-x="1072" d="M71 1012v153h906v-153h-357v-1012h-197v1012h-352zM201 1521v20h166l147 -148l147 148h170v-18l-257 -245h-119z" />
+<glyph horiz-adv-x="1284" d="M137 398v767h196v-767q0 -123 84.5 -193t220.5 -70q137 0 221.5 69.5t84.5 193.5v767h196v-767q0 -195 -139.5 -305t-362.5 -110q-221 0 -361 110t-140 305zM279 1306q0 93 59 161.5t150 68.5q56 0 140 -47t136 -47q41 0 71 32.5t30 79.5l108 -32q0 -94 -59.5 -159 t-149.5 -65q-71 0 -148 46.5t-128 46.5q-43 0 -72 -32.5t-29 -78.5z" />
+<glyph horiz-adv-x="1284" d="M137 398v767h196v-767q0 -123 84.5 -193t220.5 -70q137 0 221.5 69.5t84.5 193.5v767h196v-767q0 -195 -139.5 -305t-362.5 -110q-221 0 -361 110t-140 305zM271 1318v146h721v-146h-721z" />
+<glyph horiz-adv-x="1284" d="M137 398v767h196v-767q0 -123 84.5 -193t220.5 -70q137 0 221.5 69.5t84.5 193.5v767h196v-767q0 -195 -139.5 -305t-362.5 -110q-221 0 -361 110t-140 305zM332 1542l2 6h151q0 -66 34 -107t108 -41q72 0 107 41.5t35 106.5h151l2 -6q4 -116 -77 -189t-218 -73 q-138 0 -219 73t-76 189z" />
+<glyph horiz-adv-x="1284" d="M137 398v767h196v-767q0 -123 84.5 -193t220.5 -70q137 0 221.5 69.5t84.5 193.5v767h196v-767q0 -195 -139.5 -305t-362.5 -110q-221 0 -361 110t-140 305zM417 1412q0 84 60.5 141t147.5 57q85 0 145 -56.5t60 -141.5q0 -86 -59.5 -140t-145.5 -54q-87 0 -147.5 54 t-60.5 140zM520 1412q0 -43 31 -73.5t74 -30.5q42 0 72 29.5t30 74.5t-30 76t-72 31q-43 0 -74 -31t-31 -76z" />
+<glyph horiz-adv-x="2274" d="M99 337l1 6h188q0 -108 81.5 -158t199.5 -50q131 0 203 47t72 122q0 71 -62 115t-224 84q-223 58 -324.5 132.5t-101.5 224.5q0 147 121.5 234t327.5 87q210 0 327.5 -93t112.5 -261l-2 -6h-187q0 92 -66 149.5t-185 57.5q-125 0 -188.5 -46.5t-63.5 -120.5 q0 -73 57.5 -113.5t235.5 -83.5q215 -58 317 -136t102 -223q0 -154 -127 -238t-345 -84q-202 0 -339 85t-131 269zM1236 337l1 6h188q0 -108 81.5 -158t199.5 -50q131 0 203 47t72 122q0 71 -62 115t-224 84q-223 58 -324.5 132.5t-101.5 224.5q0 147 121.5 234t327.5 87 q210 0 327.5 -93t112.5 -261l-2 -6h-187q0 92 -66 149.5t-185 57.5q-125 0 -188.5 -46.5t-63.5 -120.5q0 -73 57.5 -113.5t235.5 -83.5q215 -58 317 -136t102 -223q0 -154 -127 -238t-345 -84q-202 0 -339 85t-131 269z" />
+<glyph horiz-adv-x="1088" d="M78 0v118l641 894h-607v153h848v-114l-643 -899h667v-152h-906zM198 1522v20h166l147 -148l147 148h170v-18l-257 -245h-119z" />
+<glyph horiz-adv-x="1088" d="M78 0v118l641 894h-607v153h848v-114l-643 -899h667v-152h-906zM403 1281v201h218v-201h-218z" />
+<glyph horiz-adv-x="1088" d="M78 0v118l641 894h-607v153h848v-114l-643 -899h667v-152h-906zM422 1233l185 266h230l2 -6l-270 -260h-147z" />
+<glyph horiz-adv-x="1121" d="M30 1165h221l302 -576l303 576h221l-428 -755v-410h-197v419zM203 1281v200h219v-200h-219zM673 1281v200h219v-200h-219z" />
+<glyph horiz-adv-x="1121" d="M30 1165h221l302 -576l303 576h221l-428 -755v-410h-197v419zM241 1277v26l246 237h120l248 -238v-25h-161l-147 148l-146 -148h-160z" />
+<glyph horiz-adv-x="1538" d="M63 1165h211l181 -901v-3l1 5l221 899h183l221 -901v-3l1 5l179 899h211l-294 -1165h-182l-225 855h-6l-227 -855h-181zM454 1278v26l246 237h120l248 -238v-25h-161l-147 148l-146 -148h-160z" />
+<glyph horiz-adv-x="1284" d="M137 398v767h196v-767q0 -123 84.5 -193t220.5 -70q137 0 221.5 69.5t84.5 193.5v767h196v-767q0 -195 -139.5 -305t-362.5 -110q-221 0 -361 110t-140 305zM442 -223q0 80 60.5 152t187.5 128l72 -57q-70 -52 -109.5 -99.5t-39.5 -101.5q0 -42 22.5 -66t73.5 -24 q27 0 50 7.5t49 18.5l33 -123q-36 -19 -79.5 -31.5t-103.5 -12.5q-95 0 -155.5 55t-60.5 154z" />
+<hkern u1="&#x22;" u2="w" k="-11" />
+<hkern u1="&#x27;" u2="w" k="-11" />
+<hkern u1="&#x28;" u2="&#x1ef8;" k="-22" />
+<hkern u1="&#x28;" u2="&#x1ef6;" k="-22" />
+<hkern u1="&#x28;" u2="&#x1ef4;" k="-22" />
+<hkern u1="&#x28;" u2="&#x1ef2;" k="-22" />
+<hkern u1="&#x28;" u2="&#x1e84;" k="-37" />
+<hkern u1="&#x28;" u2="&#x1e82;" k="-37" />
+<hkern u1="&#x28;" u2="&#x1e80;" k="-37" />
+<hkern u1="&#x28;" u2="&#x4b0;" k="-22" />
+<hkern u1="&#x28;" u2="&#x4ae;" k="-22" />
+<hkern u1="&#x28;" u2="&#x476;" k="-20" />
+<hkern u1="&#x28;" u2="&#x474;" k="-20" />
+<hkern u1="&#x28;" u2="&#x3ab;" k="-22" />
+<hkern u1="&#x28;" u2="&#x3a5;" k="-22" />
+<hkern u1="&#x28;" u2="&#x38e;" k="-22" />
+<hkern u1="&#x28;" u2="&#x178;" k="-22" />
+<hkern u1="&#x28;" u2="&#x176;" k="-22" />
+<hkern u1="&#x28;" u2="&#x174;" k="-37" />
+<hkern u1="&#x28;" u2="&#xdd;" k="-22" />
+<hkern u1="&#x28;" u2="Y" k="-22" />
+<hkern u1="&#x28;" u2="W" k="-37" />
+<hkern u1="&#x28;" u2="V" k="-20" />
+<hkern u1="A" g2="T.smcp" k="57" />
+<hkern u1="A" g2="U.smcp" k="15" />
+<hkern u1="A" g2="V.smcp" k="51" />
+<hkern u1="A" g2="W.smcp" k="35" />
+<hkern u1="A" g2="Y.smcp" k="60" />
+<hkern u1="A" u2="&#x50f;" k="57" />
+<hkern u1="A" u2="&#x50e;" k="88" />
+<hkern u1="A" u2="&#x506;" k="54" />
+<hkern u1="A" u2="&#x504;" k="80" />
+<hkern u1="A" u2="&#x4d8;" k="14" />
+<hkern u1="A" u2="&#x4bd;" k="35" />
+<hkern u1="A" u2="&#x4bc;" k="152" />
+<hkern u1="A" u2="&#x4b9;" k="123" />
+<hkern u1="A" u2="&#x4b8;" k="155" />
+<hkern u1="A" u2="&#x4a1;" k="126" />
+<hkern u1="A" u2="&#x442;" k="54" />
+<hkern u1="A" u2="&#x42c;" k="59" />
+<hkern u1="A" u2="&#x414;" k="-19" />
+<hkern u1="A" u2="&#x3c4;" k="56" />
+<hkern u1="A" u2="&#x3bb;" k="-17" />
+<hkern u1="A" u2="&#x3a8;" k="47" />
+<hkern u1="A" u2="&#x3a6;" k="27" />
+<hkern u1="A" u2="&#x1af;" k="18" />
+<hkern u1="A" u2="w" k="33" />
+<hkern u1="A" u2="t" k="17" />
+<hkern u1="A" u2="&#x3f;" k="80" />
+<hkern u1="B" u2="&#x50e;" k="26" />
+<hkern u1="B" u2="&#x46a;" k="-11" />
+<hkern u1="C" u2="&#x4bd;" k="19" />
+<hkern u1="C" u2="&#x7d;" k="17" />
+<hkern u1="C" u2="]" k="12" />
+<hkern u1="C" u2="&#x29;" k="26" />
+<hkern u1="D" g2="X.smcp" k="11" />
+<hkern u1="D" u2="&#x50e;" k="32" />
+<hkern u1="D" u2="&#x42c;" k="32" />
+<hkern u1="D" u2="&#x414;" k="33" />
+<hkern u1="D" u2="&#x3bb;" k="22" />
+<hkern u1="D" u2="&#x3a3;" k="16" />
+<hkern u1="D" u2="&#x39e;" k="13" />
+<hkern u1="D" u2="&#xc6;" k="33" />
+<hkern u1="E" g2="V.smcp" k="16" />
+<hkern u1="E" g2="W.smcp" k="19" />
+<hkern u1="E" g2="Y.smcp" k="16" />
+<hkern u1="E" u2="w" k="22" />
+<hkern u1="E" u2="f" k="18" />
+<hkern u1="F" u2="&#x2026;" k="273" />
+<hkern u1="F" u2="&#x2025;" k="273" />
+<hkern u1="F" u2="&#x201e;" k="273" />
+<hkern u1="F" u2="&#x201a;" k="273" />
+<hkern u1="F" u2="&#x1ef9;" k="24" />
+<hkern u1="F" u2="&#x1ef7;" k="24" />
+<hkern u1="F" u2="&#x1ef5;" k="24" />
+<hkern u1="F" u2="&#x1ef3;" k="24" />
+<hkern u1="F" u2="&#x1ef1;" k="22" />
+<hkern u1="F" u2="&#x1eef;" k="22" />
+<hkern u1="F" u2="&#x1eed;" k="22" />
+<hkern u1="F" u2="&#x1eeb;" k="22" />
+<hkern u1="F" u2="&#x1ee9;" k="22" />
+<hkern u1="F" u2="&#x1ee7;" k="22" />
+<hkern u1="F" u2="&#x1ee5;" k="22" />
+<hkern u1="F" u2="&#x1ee3;" k="21" />
+<hkern u1="F" u2="&#x1ee1;" k="21" />
+<hkern u1="F" u2="&#x1edf;" k="21" />
+<hkern u1="F" u2="&#x1edd;" k="21" />
+<hkern u1="F" u2="&#x1edb;" k="21" />
+<hkern u1="F" u2="&#x1ed9;" k="21" />
+<hkern u1="F" u2="&#x1ed7;" k="21" />
+<hkern u1="F" u2="&#x1ed5;" k="21" />
+<hkern u1="F" u2="&#x1ed3;" k="21" />
+<hkern u1="F" u2="&#x1ed1;" k="21" />
+<hkern u1="F" u2="&#x1ecf;" k="21" />
+<hkern u1="F" u2="&#x1ecd;" k="21" />
+<hkern u1="F" u2="&#x1ec7;" k="21" />
+<hkern u1="F" u2="&#x1ec5;" k="21" />
+<hkern u1="F" u2="&#x1ec3;" k="21" />
+<hkern u1="F" u2="&#x1ec1;" k="21" />
+<hkern u1="F" u2="&#x1ebf;" k="21" />
+<hkern u1="F" u2="&#x1ebd;" k="21" />
+<hkern u1="F" u2="&#x1ebb;" k="21" />
+<hkern u1="F" u2="&#x1eb9;" k="21" />
+<hkern u1="F" u2="&#x1eb7;" k="34" />
+<hkern u1="F" u2="&#x1eb6;" k="59" />
+<hkern u1="F" u2="&#x1eb5;" k="34" />
+<hkern u1="F" u2="&#x1eb4;" k="59" />
+<hkern u1="F" u2="&#x1eb3;" k="34" />
+<hkern u1="F" u2="&#x1eb2;" k="59" />
+<hkern u1="F" u2="&#x1eb1;" k="34" />
+<hkern u1="F" u2="&#x1eb0;" k="59" />
+<hkern u1="F" u2="&#x1eaf;" k="34" />
+<hkern u1="F" u2="&#x1eae;" k="59" />
+<hkern u1="F" u2="&#x1ead;" k="34" />
+<hkern u1="F" u2="&#x1eac;" k="59" />
+<hkern u1="F" u2="&#x1eab;" k="34" />
+<hkern u1="F" u2="&#x1eaa;" k="59" />
+<hkern u1="F" u2="&#x1ea9;" k="34" />
+<hkern u1="F" u2="&#x1ea8;" k="59" />
+<hkern u1="F" u2="&#x1ea7;" k="34" />
+<hkern u1="F" u2="&#x1ea6;" k="59" />
+<hkern u1="F" u2="&#x1ea5;" k="34" />
+<hkern u1="F" u2="&#x1ea4;" k="59" />
+<hkern u1="F" u2="&#x1ea3;" k="34" />
+<hkern u1="F" u2="&#x1ea2;" k="59" />
+<hkern u1="F" u2="&#x1ea1;" k="34" />
+<hkern u1="F" u2="&#x1ea0;" k="59" />
+<hkern u1="F" u2="&#x1e01;" k="34" />
+<hkern u1="F" u2="&#x1e00;" k="59" />
+<hkern u1="F" u2="&#x50d;" k="21" />
+<hkern u1="F" u2="&#x503;" k="21" />
+<hkern u1="F" u2="&#x502;" k="21" />
+<hkern u1="F" u2="&#x501;" k="21" />
+<hkern u1="F" u2="&#x4f3;" k="24" />
+<hkern u1="F" u2="&#x4f1;" k="24" />
+<hkern u1="F" u2="&#x4ef;" k="24" />
+<hkern u1="F" u2="&#x4eb;" k="21" />
+<hkern u1="F" u2="&#x4e9;" k="21" />
+<hkern u1="F" u2="&#x4e7;" k="21" />
+<hkern u1="F" u2="&#x4db;" k="21" />
+<hkern u1="F" u2="&#x4d9;" k="21" />
+<hkern u1="F" u2="&#x4d7;" k="21" />
+<hkern u1="F" u2="&#x4d3;" k="34" />
+<hkern u1="F" u2="&#x4d2;" k="59" />
+<hkern u1="F" u2="&#x4d1;" k="34" />
+<hkern u1="F" u2="&#x4d0;" k="59" />
+<hkern u1="F" u2="&#x4b4;" k="-20" />
+<hkern u1="F" u2="&#x4af;" k="24" />
+<hkern u1="F" u2="&#x4ac;" k="-20" />
+<hkern u1="F" u2="&#x4ab;" k="21" />
+<hkern u1="F" u2="&#x4a9;" k="21" />
+<hkern u1="F" u2="&#x4a0;" k="-20" />
+<hkern u1="F" u2="&#x481;" k="21" />
+<hkern u1="F" u2="&#x47d;" k="21" />
+<hkern u1="F" u2="&#x479;" k="21" />
+<hkern u1="F" u2="&#x477;" k="24" />
+<hkern u1="F" u2="&#x475;" k="24" />
+<hkern u1="F" u2="&#x473;" k="21" />
+<hkern u1="F" u2="&#x466;" k="59" />
+<hkern u1="F" u2="&#x45e;" k="24" />
+<hkern u1="F" u2="&#x454;" k="21" />
+<hkern u1="F" u2="&#x451;" k="21" />
+<hkern u1="F" u2="&#x450;" k="21" />
+<hkern u1="F" u2="&#x444;" k="21" />
+<hkern u1="F" u2="&#x443;" k="24" />
+<hkern u1="F" u2="&#x441;" k="21" />
+<hkern u1="F" u2="&#x43e;" k="21" />
+<hkern u1="F" u2="&#x435;" k="21" />
+<hkern u1="F" u2="&#x430;" k="34" />
+<hkern u1="F" u2="&#x422;" k="-20" />
+<hkern u1="F" u2="&#x410;" k="59" />
+<hkern u1="F" u2="&#x40b;" k="-20" />
+<hkern u1="F" u2="&#x402;" k="-20" />
+<hkern u1="F" u2="&#x3cd;" k="22" />
+<hkern u1="F" u2="&#x3cc;" k="21" />
+<hkern u1="F" u2="&#x3cb;" k="22" />
+<hkern u1="F" u2="&#x3c5;" k="22" />
+<hkern u1="F" u2="&#x3c3;" k="21" />
+<hkern u1="F" u2="&#x3c2;" k="21" />
+<hkern u1="F" u2="&#x3bf;" k="21" />
+<hkern u1="F" u2="&#x3bd;" k="24" />
+<hkern u1="F" u2="&#x3b3;" k="24" />
+<hkern u1="F" u2="&#x3b1;" k="21" />
+<hkern u1="F" u2="&#x3b0;" k="22" />
+<hkern u1="F" u2="&#x3ac;" k="21" />
+<hkern u1="F" u2="&#x39b;" k="59" />
+<hkern u1="F" u2="&#x394;" k="59" />
+<hkern u1="F" u2="&#x391;" k="59" />
+<hkern u1="F" u2="&#x386;" k="59" />
+<hkern u1="F" u2="&#x1fb;" k="34" />
+<hkern u1="F" u2="&#x1fa;" k="59" />
+<hkern u1="F" u2="&#x1b0;" k="22" />
+<hkern u1="F" u2="&#x1a1;" k="21" />
+<hkern u1="F" u2="&#x177;" k="24" />
+<hkern u1="F" u2="&#x173;" k="22" />
+<hkern u1="F" u2="&#x171;" k="22" />
+<hkern u1="F" u2="&#x16f;" k="22" />
+<hkern u1="F" u2="&#x16d;" k="22" />
+<hkern u1="F" u2="&#x16b;" k="22" />
+<hkern u1="F" u2="&#x169;" k="22" />
+<hkern u1="F" u2="&#x164;" k="-20" />
+<hkern u1="F" u2="&#x162;" k="-20" />
+<hkern u1="F" u2="&#x153;" k="21" />
+<hkern u1="F" u2="&#x151;" k="21" />
+<hkern u1="F" u2="&#x14f;" k="21" />
+<hkern u1="F" u2="&#x14d;" k="21" />
+<hkern u1="F" u2="&#x123;" k="21" />
+<hkern u1="F" u2="&#x121;" k="21" />
+<hkern u1="F" u2="&#x11f;" k="21" />
+<hkern u1="F" u2="&#x11d;" k="21" />
+<hkern u1="F" u2="&#x11b;" k="21" />
+<hkern u1="F" u2="&#x119;" k="21" />
+<hkern u1="F" u2="&#x117;" k="21" />
+<hkern u1="F" u2="&#x115;" k="21" />
+<hkern u1="F" u2="&#x113;" k="21" />
+<hkern u1="F" u2="&#x10f;" k="21" />
+<hkern u1="F" u2="&#x10d;" k="21" />
+<hkern u1="F" u2="&#x10b;" k="21" />
+<hkern u1="F" u2="&#x109;" k="21" />
+<hkern u1="F" u2="&#x107;" k="21" />
+<hkern u1="F" u2="&#x105;" k="34" />
+<hkern u1="F" u2="&#x104;" k="59" />
+<hkern u1="F" u2="&#x103;" k="34" />
+<hkern u1="F" u2="&#x102;" k="59" />
+<hkern u1="F" u2="&#x101;" k="34" />
+<hkern u1="F" u2="&#x100;" k="59" />
+<hkern u1="F" u2="&#xff;" k="24" />
+<hkern u1="F" u2="&#xfd;" k="24" />
+<hkern u1="F" u2="&#xfc;" k="22" />
+<hkern u1="F" u2="&#xfb;" k="22" />
+<hkern u1="F" u2="&#xfa;" k="22" />
+<hkern u1="F" u2="&#xf9;" k="22" />
+<hkern u1="F" u2="&#xf6;" k="21" />
+<hkern u1="F" u2="&#xf5;" k="21" />
+<hkern u1="F" u2="&#xf4;" k="21" />
+<hkern u1="F" u2="&#xf3;" k="21" />
+<hkern u1="F" u2="&#xf2;" k="21" />
+<hkern u1="F" u2="&#xeb;" k="21" />
+<hkern u1="F" u2="&#xea;" k="21" />
+<hkern u1="F" u2="&#xe9;" k="21" />
+<hkern u1="F" u2="&#xe8;" k="21" />
+<hkern u1="F" u2="&#xe7;" k="21" />
+<hkern u1="F" u2="&#xe5;" k="34" />
+<hkern u1="F" u2="&#xe4;" k="34" />
+<hkern u1="F" u2="&#xe3;" k="34" />
+<hkern u1="F" u2="&#xe2;" k="34" />
+<hkern u1="F" u2="&#xe1;" k="34" />
+<hkern u1="F" u2="&#xe0;" k="34" />
+<hkern u1="F" u2="&#xc5;" k="59" />
+<hkern u1="F" u2="&#xc4;" k="59" />
+<hkern u1="F" u2="&#xc3;" k="59" />
+<hkern u1="F" u2="&#xc2;" k="59" />
+<hkern u1="F" u2="&#xc1;" k="59" />
+<hkern u1="F" u2="&#xc0;" k="59" />
+<hkern u1="F" u2="y" k="24" />
+<hkern u1="F" u2="v" k="24" />
+<hkern u1="F" u2="u" k="22" />
+<hkern u1="F" u2="r" k="26" />
+<hkern u1="F" u2="q" k="21" />
+<hkern u1="F" u2="o" k="21" />
+<hkern u1="F" u2="g" k="21" />
+<hkern u1="F" u2="e" k="21" />
+<hkern u1="F" u2="d" k="21" />
+<hkern u1="F" u2="c" k="21" />
+<hkern u1="F" u2="a" k="34" />
+<hkern u1="F" u2="T" k="-20" />
+<hkern u1="F" u2="A" k="59" />
+<hkern u1="F" u2="&#x3a;" k="273" />
+<hkern u1="F" u2="&#x2e;" k="273" />
+<hkern u1="F" u2="&#x2c;" k="273" />
+<hkern u1="H" u2="&#x50e;" k="28" />
+<hkern u1="H" u2="&#x506;" k="30" />
+<hkern u1="H" u2="&#x504;" k="29" />
+<hkern u1="H" u2="&#x4bc;" k="28" />
+<hkern u1="H" u2="&#x4b9;" k="27" />
+<hkern u1="H" u2="&#x4b8;" k="28" />
+<hkern u1="H" u2="&#x434;" k="-21" />
+<hkern u1="H" u2="&#x414;" k="-21" />
+<hkern u1="I" u2="&#x50e;" k="28" />
+<hkern u1="I" u2="&#x506;" k="30" />
+<hkern u1="I" u2="&#x504;" k="29" />
+<hkern u1="I" u2="&#x4bc;" k="28" />
+<hkern u1="I" u2="&#x4b9;" k="27" />
+<hkern u1="I" u2="&#x4b8;" k="28" />
+<hkern u1="I" u2="&#x434;" k="-21" />
+<hkern u1="I" u2="&#x414;" k="-21" />
+<hkern u1="K" g2="Q.smcp" k="25" />
+<hkern u1="K" u2="&#x510;" k="17" />
+<hkern u1="K" u2="&#x50f;" k="53" />
+<hkern u1="K" u2="&#x507;" k="52" />
+<hkern u1="K" u2="&#x505;" k="52" />
+<hkern u1="K" u2="&#x4d8;" k="28" />
+<hkern u1="K" u2="&#x4b9;" k="59" />
+<hkern u1="K" u2="&#x4a1;" k="96" />
+<hkern u1="K" u2="&#x47f;" k="56" />
+<hkern u1="K" u2="&#x47b;" k="46" />
+<hkern u1="K" u2="&#x461;" k="78" />
+<hkern u1="K" u2="&#x442;" k="71" />
+<hkern u1="K" u2="&#x431;" k="41" />
+<hkern u1="K" u2="&#x3c4;" k="76" />
+<hkern u1="K" u2="&#x3a6;" k="59" />
+<hkern u1="K" u2="w" k="63" />
+<hkern u1="L" g2="Q.smcp" k="14" />
+<hkern u1="L" g2="T.smcp" k="69" />
+<hkern u1="L" g2="U.smcp" k="18" />
+<hkern u1="L" g2="V.smcp" k="73" />
+<hkern u1="L" g2="W.smcp" k="42" />
+<hkern u1="L" g2="Y.smcp" k="75" />
+<hkern u1="L" u2="w" k="52" />
+<hkern u1="M" u2="&#x50e;" k="28" />
+<hkern u1="M" u2="&#x506;" k="30" />
+<hkern u1="M" u2="&#x504;" k="29" />
+<hkern u1="M" u2="&#x4bc;" k="28" />
+<hkern u1="M" u2="&#x4b9;" k="27" />
+<hkern u1="M" u2="&#x4b8;" k="28" />
+<hkern u1="M" u2="&#x434;" k="-21" />
+<hkern u1="M" u2="&#x414;" k="-21" />
+<hkern u1="N" u2="&#x50e;" k="28" />
+<hkern u1="N" u2="&#x506;" k="30" />
+<hkern u1="N" u2="&#x504;" k="29" />
+<hkern u1="N" u2="&#x4bc;" k="28" />
+<hkern u1="N" u2="&#x4b9;" k="27" />
+<hkern u1="N" u2="&#x4b8;" k="28" />
+<hkern u1="N" u2="&#x434;" k="-21" />
+<hkern u1="N" u2="&#x414;" k="-21" />
+<hkern u1="O" g2="X.smcp" k="11" />
+<hkern u1="O" u2="&#x50e;" k="32" />
+<hkern u1="O" u2="&#x42c;" k="32" />
+<hkern u1="O" u2="&#x414;" k="33" />
+<hkern u1="O" u2="&#x3bb;" k="22" />
+<hkern u1="O" u2="&#x3a3;" k="16" />
+<hkern u1="O" u2="&#x39e;" k="13" />
+<hkern u1="O" u2="&#xc6;" k="33" />
+<hkern u1="P" u2="&#x500;" k="48" />
+<hkern u1="P" u2="&#x434;" k="171" />
+<hkern u1="P" u2="&#x414;" k="235" />
+<hkern u1="P" u2="&#x3c1;" k="56" />
+<hkern u1="P" u2="&#x3bb;" k="102" />
+<hkern u1="P" u2="&#x3b4;" k="40" />
+<hkern u1="P" u2="&#xc6;" k="293" />
+<hkern u1="P" u2="t" k="-14" />
+<hkern u1="Q" u2="&#x1ef8;" k="35" />
+<hkern u1="Q" u2="&#x1ef6;" k="35" />
+<hkern u1="Q" u2="&#x1ef4;" k="35" />
+<hkern u1="Q" u2="&#x1ef2;" k="35" />
+<hkern u1="Q" u2="&#x1e84;" k="20" />
+<hkern u1="Q" u2="&#x1e82;" k="20" />
+<hkern u1="Q" u2="&#x1e80;" k="20" />
+<hkern u1="Q" u2="&#x4b4;" k="33" />
+<hkern u1="Q" u2="&#x4b0;" k="35" />
+<hkern u1="Q" u2="&#x4ae;" k="35" />
+<hkern u1="Q" u2="&#x4ac;" k="33" />
+<hkern u1="Q" u2="&#x4a0;" k="33" />
+<hkern u1="Q" u2="&#x476;" k="28" />
+<hkern u1="Q" u2="&#x474;" k="28" />
+<hkern u1="Q" u2="&#x422;" k="33" />
+<hkern u1="Q" u2="&#x40b;" k="33" />
+<hkern u1="Q" u2="&#x402;" k="33" />
+<hkern u1="Q" u2="&#x3ab;" k="35" />
+<hkern u1="Q" u2="&#x3a5;" k="35" />
+<hkern u1="Q" u2="&#x38e;" k="35" />
+<hkern u1="Q" u2="&#x178;" k="35" />
+<hkern u1="Q" u2="&#x176;" k="35" />
+<hkern u1="Q" u2="&#x174;" k="20" />
+<hkern u1="Q" u2="&#x164;" k="33" />
+<hkern u1="Q" u2="&#x162;" k="33" />
+<hkern u1="Q" u2="&#xdd;" k="35" />
+<hkern u1="Q" u2="Y" k="35" />
+<hkern u1="Q" u2="W" k="20" />
+<hkern u1="Q" u2="V" k="28" />
+<hkern u1="Q" u2="T" k="33" />
+<hkern u1="R" u2="&#x1ef8;" k="48" />
+<hkern u1="R" u2="&#x1ef6;" k="48" />
+<hkern u1="R" u2="&#x1ef4;" k="48" />
+<hkern u1="R" u2="&#x1ef2;" k="48" />
+<hkern u1="R" u2="&#x4b4;" k="50" />
+<hkern u1="R" u2="&#x4b0;" k="48" />
+<hkern u1="R" u2="&#x4ae;" k="48" />
+<hkern u1="R" u2="&#x4ac;" k="50" />
+<hkern u1="R" u2="&#x4a0;" k="50" />
+<hkern u1="R" u2="&#x476;" k="19" />
+<hkern u1="R" u2="&#x474;" k="19" />
+<hkern u1="R" u2="&#x422;" k="50" />
+<hkern u1="R" u2="&#x40b;" k="50" />
+<hkern u1="R" u2="&#x402;" k="50" />
+<hkern u1="R" u2="&#x3ab;" k="48" />
+<hkern u1="R" u2="&#x3a5;" k="48" />
+<hkern u1="R" u2="&#x38e;" k="48" />
+<hkern u1="R" u2="&#x178;" k="48" />
+<hkern u1="R" u2="&#x176;" k="48" />
+<hkern u1="R" u2="&#x164;" k="50" />
+<hkern u1="R" u2="&#x162;" k="50" />
+<hkern u1="R" u2="&#xdd;" k="48" />
+<hkern u1="R" u2="Y" k="48" />
+<hkern u1="R" u2="V" k="19" />
+<hkern u1="R" u2="T" k="50" />
+<hkern u1="T" g2="Q.smcp" k="71" />
+<hkern u1="T" g2="S.smcp" k="68" />
+<hkern u1="T" g2="T.smcp" k="15" />
+<hkern u1="T" g2="W.smcp" k="15" />
+<hkern u1="T" g2="X.smcp" k="19" />
+<hkern u1="T" u2="&#x510;" k="14" />
+<hkern u1="T" u2="&#x50f;" k="111" />
+<hkern u1="T" u2="&#x50e;" k="-15" />
+<hkern u1="T" u2="&#x50b;" k="133" />
+<hkern u1="T" u2="&#x507;" k="83" />
+<hkern u1="T" u2="&#x505;" k="110" />
+<hkern u1="T" u2="&#x500;" k="149" />
+<hkern u1="T" u2="&#x4d8;" k="26" />
+<hkern u1="T" u2="&#x4bd;" k="148" />
+<hkern u1="T" u2="&#x4bc;" k="102" />
+<hkern u1="T" u2="&#x4bb;" k="132" />
+<hkern u1="T" u2="&#x4b9;" k="132" />
+<hkern u1="T" u2="&#x4a7;" k="96" />
+<hkern u1="T" u2="&#x4a1;" k="77" />
+<hkern u1="T" u2="&#x49d;" k="131" />
+<hkern u1="T" u2="&#x491;" k="104" />
+<hkern u1="T" u2="&#x48f;" k="127" />
+<hkern u1="T" u2="&#x47f;" k="38" />
+<hkern u1="T" u2="&#x47b;" k="153" />
+<hkern u1="T" u2="&#x461;" k="129" />
+<hkern u1="T" u2="&#x45f;" k="131" />
+<hkern u1="T" u2="&#x44f;" k="135" />
+<hkern u1="T" u2="&#x44d;" k="128" />
+<hkern u1="T" u2="&#x44b;" k="131" />
+<hkern u1="T" u2="&#x442;" k="78" />
+<hkern u1="T" u2="&#x437;" k="128" />
+<hkern u1="T" u2="&#x434;" k="140" />
+<hkern u1="T" u2="&#x432;" k="96" />
+<hkern u1="T" u2="&#x431;" k="28" />
+<hkern u1="T" u2="&#x42c;" k="-15" />
+<hkern u1="T" u2="&#x414;" k="81" />
+<hkern u1="T" u2="&#x3c9;" k="132" />
+<hkern u1="T" u2="&#x3c8;" k="131" />
+<hkern u1="T" u2="&#x3c7;" k="77" />
+<hkern u1="T" u2="&#x3c6;" k="130" />
+<hkern u1="T" u2="&#x3c4;" k="78" />
+<hkern u1="T" u2="&#x3c1;" k="135" />
+<hkern u1="T" u2="&#x3c0;" k="101" />
+<hkern u1="T" u2="&#x3b9;" k="133" />
+<hkern u1="T" u2="&#x3b5;" k="130" />
+<hkern u1="T" u2="&#x3b4;" k="15" />
+<hkern u1="T" u2="&#x3a6;" k="72" />
+<hkern u1="T" u2="&#xf8;" k="95" />
+<hkern u1="T" u2="&#xe6;" k="84" />
+<hkern u1="T" u2="&#xc6;" k="188" />
+<hkern u1="T" u2="&#xbb;" k="147" />
+<hkern u1="T" u2="&#xab;" k="151" />
+<hkern u1="T" u2="w" k="47" />
+<hkern u1="T" u2="r" k="65" />
+<hkern u1="V" g2="Q.smcp" k="39" />
+<hkern u1="V" u2="&#x7d;" k="-19" />
+<hkern u1="V" u2="r" k="30" />
+<hkern u1="V" u2="]" k="-17" />
+<hkern u1="V" u2="&#x29;" k="-20" />
+<hkern u1="W" g2="Q.smcp" k="25" />
+<hkern u1="W" u2="&#x7d;" k="-14" />
+<hkern u1="W" u2="r" k="21" />
+<hkern u1="W" u2="]" k="-12" />
+<hkern u1="W" u2="&#x29;" k="-15" />
+<hkern u1="X" g2="Q.smcp" k="23" />
+<hkern u1="X" u2="&#x510;" k="14" />
+<hkern u1="X" u2="&#x50f;" k="42" />
+<hkern u1="X" u2="&#x506;" k="-12" />
+<hkern u1="X" u2="&#x504;" k="-13" />
+<hkern u1="X" u2="&#x4d8;" k="25" />
+<hkern u1="X" u2="&#x4bd;" k="59" />
+<hkern u1="X" u2="&#x4bc;" k="42" />
+<hkern u1="X" u2="&#x4b9;" k="45" />
+<hkern u1="X" u2="&#x4a1;" k="41" />
+<hkern u1="X" u2="&#x442;" k="41" />
+<hkern u1="X" u2="&#x431;" k="23" />
+<hkern u1="X" u2="&#x414;" k="-18" />
+<hkern u1="X" u2="&#x3c9;" k="18" />
+<hkern u1="X" u2="&#x3c8;" k="27" />
+<hkern u1="X" u2="&#x3c6;" k="25" />
+<hkern u1="X" u2="&#x3c4;" k="32" />
+<hkern u1="X" u2="&#x3bb;" k="-17" />
+<hkern u1="X" u2="&#x3b8;" k="19" />
+<hkern u1="X" u2="&#x3b4;" k="16" />
+<hkern u1="X" u2="&#x3a6;" k="44" />
+<hkern u1="Y" g2="Q.smcp" k="53" />
+<hkern u1="Y" g2="T.smcp" k="13" />
+<hkern u1="Y" g2="W.smcp" k="13" />
+<hkern u1="Y" g2="X.smcp" k="17" />
+<hkern u1="Y" u2="&#x2022;" k="45" />
+<hkern u1="Y" u2="&#x3c9;" k="57" />
+<hkern u1="Y" u2="&#x3c8;" k="38" />
+<hkern u1="Y" u2="&#x3c7;" k="63" />
+<hkern u1="Y" u2="&#x3c6;" k="53" />
+<hkern u1="Y" u2="&#x3c4;" k="23" />
+<hkern u1="Y" u2="&#x3c1;" k="70" />
+<hkern u1="Y" u2="&#x3c0;" k="24" />
+<hkern u1="Y" u2="&#x3b9;" k="42" />
+<hkern u1="Y" u2="&#x3b8;" k="23" />
+<hkern u1="Y" u2="&#x3b6;" k="-13" />
+<hkern u1="Y" u2="&#x3b5;" k="58" />
+<hkern u1="Y" u2="&#x3b4;" k="18" />
+<hkern u1="Y" u2="&#x3b2;" k="22" />
+<hkern u1="Y" u2="&#x3a6;" k="48" />
+<hkern u1="Y" u2="&#xf8;" k="64" />
+<hkern u1="Y" u2="&#xe6;" k="63" />
+<hkern u1="Y" u2="&#xc6;" k="96" />
+<hkern u1="Y" u2="&#xbb;" k="51" />
+<hkern u1="Y" u2="&#xab;" k="82" />
+<hkern u1="Y" u2="&#x7d;" k="-19" />
+<hkern u1="Y" u2="t" k="22" />
+<hkern u1="Y" u2="r" k="40" />
+<hkern u1="Y" u2="f" k="22" />
+<hkern u1="Y" u2="]" k="-18" />
+<hkern u1="Y" u2="&#x2a;" k="49" />
+<hkern u1="Y" u2="&#x29;" k="-20" />
+<hkern u1="Y" u2="&#x26;" k="30" />
+<hkern u1="Z" g2="Q.smcp" k="20" />
+<hkern u1="Z" u2="&#x3c8;" k="28" />
+<hkern u1="Z" u2="&#x3a6;" k="53" />
+<hkern u1="Z" u2="w" k="27" />
+<hkern u1="[" u2="&#x1ee6;" k="18" />
+<hkern u1="[" u2="&#x1ee4;" k="18" />
+<hkern u1="[" u2="&#x408;" k="18" />
+<hkern u1="[" u2="&#x172;" k="18" />
+<hkern u1="[" u2="&#x170;" k="18" />
+<hkern u1="[" u2="&#x16e;" k="18" />
+<hkern u1="[" u2="&#x16c;" k="18" />
+<hkern u1="[" u2="&#x16a;" k="18" />
+<hkern u1="[" u2="&#x168;" k="18" />
+<hkern u1="[" u2="&#x134;" k="18" />
+<hkern u1="[" u2="&#xdc;" k="18" />
+<hkern u1="[" u2="&#xdb;" k="18" />
+<hkern u1="[" u2="&#xda;" k="18" />
+<hkern u1="[" u2="&#xd9;" k="18" />
+<hkern u1="[" u2="U" k="18" />
+<hkern u1="[" u2="J" k="18" />
+<hkern u1="a" u2="&#x50f;" k="15" />
+<hkern u1="a" u2="&#x507;" k="13" />
+<hkern u1="a" u2="&#x505;" k="13" />
+<hkern u1="a" u2="&#x4a1;" k="15" />
+<hkern u1="a" u2="&#x47f;" k="13" />
+<hkern u1="a" u2="&#x461;" k="15" />
+<hkern u1="a" u2="&#x442;" k="16" />
+<hkern u1="b" u2="&#x50f;" k="20" />
+<hkern u1="b" u2="&#x4a1;" k="20" />
+<hkern u1="b" u2="&#x442;" k="21" />
+<hkern u1="b" u2="&#x434;" k="18" />
+<hkern u1="b" u2="&#x3c7;" k="24" />
+<hkern u1="b" u2="&#x3c4;" k="22" />
+<hkern u1="e" u2="&#x442;" k="11" />
+<hkern u1="f" u2="&#x2033;" k="-16" />
+<hkern u1="f" u2="&#x2032;" k="-16" />
+<hkern u1="f" u2="&#x201d;" k="-16" />
+<hkern u1="f" u2="&#x201c;" k="-16" />
+<hkern u1="f" u2="&#x201b;" k="-16" />
+<hkern u1="f" u2="&#x2019;" k="-16" />
+<hkern u1="f" u2="&#x2018;" k="-16" />
+<hkern u1="f" u2="&#x1ee3;" k="24" />
+<hkern u1="f" u2="&#x1edf;" k="24" />
+<hkern u1="f" u2="&#x1edd;" k="24" />
+<hkern u1="f" u2="&#x1edb;" k="24" />
+<hkern u1="f" u2="&#x1ec7;" k="24" />
+<hkern u1="f" u2="&#x1ec5;" k="24" />
+<hkern u1="f" u2="&#x1ec3;" k="24" />
+<hkern u1="f" u2="&#x1ec1;" k="24" />
+<hkern u1="f" u2="&#x1ebf;" k="24" />
+<hkern u1="f" u2="&#x1ebd;" k="24" />
+<hkern u1="f" u2="&#x1ebb;" k="24" />
+<hkern u1="f" u2="&#x1eb9;" k="24" />
+<hkern u1="f" u2="&#x50d;" k="24" />
+<hkern u1="f" u2="&#x503;" k="24" />
+<hkern u1="f" u2="&#x502;" k="24" />
+<hkern u1="f" u2="&#x501;" k="24" />
+<hkern u1="f" u2="&#x4e9;" k="24" />
+<hkern u1="f" u2="&#x4db;" k="24" />
+<hkern u1="f" u2="&#x4d9;" k="24" />
+<hkern u1="f" u2="&#x4d7;" k="24" />
+<hkern u1="f" u2="&#x4ab;" k="24" />
+<hkern u1="f" u2="&#x4a9;" k="24" />
+<hkern u1="f" u2="&#x481;" k="24" />
+<hkern u1="f" u2="&#x47d;" k="24" />
+<hkern u1="f" u2="&#x479;" k="24" />
+<hkern u1="f" u2="&#x454;" k="24" />
+<hkern u1="f" u2="&#x451;" k="24" />
+<hkern u1="f" u2="&#x450;" k="24" />
+<hkern u1="f" u2="&#x444;" k="24" />
+<hkern u1="f" u2="&#x441;" k="24" />
+<hkern u1="f" u2="&#x435;" k="24" />
+<hkern u1="f" u2="&#x3c3;" k="24" />
+<hkern u1="f" u2="&#x3c2;" k="24" />
+<hkern u1="f" u2="&#x3b1;" k="24" />
+<hkern u1="f" u2="&#x3ac;" k="24" />
+<hkern u1="f" u2="&#x2bc;" k="-16" />
+<hkern u1="f" u2="&#x1a1;" k="24" />
+<hkern u1="f" u2="&#x153;" k="24" />
+<hkern u1="f" u2="&#x123;" k="24" />
+<hkern u1="f" u2="&#x121;" k="24" />
+<hkern u1="f" u2="&#x11f;" k="24" />
+<hkern u1="f" u2="&#x11d;" k="24" />
+<hkern u1="f" u2="&#x11b;" k="24" />
+<hkern u1="f" u2="&#x119;" k="24" />
+<hkern u1="f" u2="&#x117;" k="24" />
+<hkern u1="f" u2="&#x115;" k="24" />
+<hkern u1="f" u2="&#x113;" k="24" />
+<hkern u1="f" u2="&#x10f;" k="24" />
+<hkern u1="f" u2="&#x10d;" k="24" />
+<hkern u1="f" u2="&#x10b;" k="24" />
+<hkern u1="f" u2="&#x109;" k="24" />
+<hkern u1="f" u2="&#x107;" k="24" />
+<hkern u1="f" u2="&#xeb;" k="24" />
+<hkern u1="f" u2="&#xea;" k="24" />
+<hkern u1="f" u2="&#xe9;" k="24" />
+<hkern u1="f" u2="&#xe8;" k="24" />
+<hkern u1="f" u2="&#xe7;" k="24" />
+<hkern u1="f" u2="&#x7d;" k="-19" />
+<hkern u1="f" u2="q" k="24" />
+<hkern u1="f" u2="g" k="24" />
+<hkern u1="f" u2="e" k="24" />
+<hkern u1="f" u2="d" k="24" />
+<hkern u1="f" u2="c" k="24" />
+<hkern u1="f" u2="]" k="-18" />
+<hkern u1="f" u2="&#x29;" k="-20" />
+<hkern u1="f" u2="&#x27;" k="-16" />
+<hkern u1="f" u2="&#x22;" k="-16" />
+<hkern u1="k" u2="&#x1ee3;" k="20" />
+<hkern u1="k" u2="&#x1edf;" k="20" />
+<hkern u1="k" u2="&#x1edd;" k="20" />
+<hkern u1="k" u2="&#x1edb;" k="20" />
+<hkern u1="k" u2="&#x1ec7;" k="20" />
+<hkern u1="k" u2="&#x1ec5;" k="20" />
+<hkern u1="k" u2="&#x1ec3;" k="20" />
+<hkern u1="k" u2="&#x1ec1;" k="20" />
+<hkern u1="k" u2="&#x1ebf;" k="20" />
+<hkern u1="k" u2="&#x1ebd;" k="20" />
+<hkern u1="k" u2="&#x1ebb;" k="20" />
+<hkern u1="k" u2="&#x1eb9;" k="20" />
+<hkern u1="k" u2="&#x50d;" k="20" />
+<hkern u1="k" u2="&#x503;" k="20" />
+<hkern u1="k" u2="&#x502;" k="20" />
+<hkern u1="k" u2="&#x501;" k="20" />
+<hkern u1="k" u2="&#x4e9;" k="20" />
+<hkern u1="k" u2="&#x4db;" k="20" />
+<hkern u1="k" u2="&#x4d9;" k="20" />
+<hkern u1="k" u2="&#x4d7;" k="20" />
+<hkern u1="k" u2="&#x4ab;" k="20" />
+<hkern u1="k" u2="&#x4a9;" k="20" />
+<hkern u1="k" u2="&#x481;" k="20" />
+<hkern u1="k" u2="&#x47d;" k="20" />
+<hkern u1="k" u2="&#x479;" k="20" />
+<hkern u1="k" u2="&#x454;" k="20" />
+<hkern u1="k" u2="&#x451;" k="20" />
+<hkern u1="k" u2="&#x450;" k="20" />
+<hkern u1="k" u2="&#x444;" k="20" />
+<hkern u1="k" u2="&#x441;" k="20" />
+<hkern u1="k" u2="&#x435;" k="20" />
+<hkern u1="k" u2="&#x3c3;" k="20" />
+<hkern u1="k" u2="&#x3c2;" k="20" />
+<hkern u1="k" u2="&#x3b1;" k="20" />
+<hkern u1="k" u2="&#x3ac;" k="20" />
+<hkern u1="k" u2="&#x1a1;" k="20" />
+<hkern u1="k" u2="&#x153;" k="20" />
+<hkern u1="k" u2="&#x123;" k="20" />
+<hkern u1="k" u2="&#x121;" k="20" />
+<hkern u1="k" u2="&#x11f;" k="20" />
+<hkern u1="k" u2="&#x11d;" k="20" />
+<hkern u1="k" u2="&#x11b;" k="20" />
+<hkern u1="k" u2="&#x119;" k="20" />
+<hkern u1="k" u2="&#x117;" k="20" />
+<hkern u1="k" u2="&#x115;" k="20" />
+<hkern u1="k" u2="&#x113;" k="20" />
+<hkern u1="k" u2="&#x10f;" k="20" />
+<hkern u1="k" u2="&#x10d;" k="20" />
+<hkern u1="k" u2="&#x10b;" k="20" />
+<hkern u1="k" u2="&#x109;" k="20" />
+<hkern u1="k" u2="&#x107;" k="20" />
+<hkern u1="k" u2="&#xeb;" k="20" />
+<hkern u1="k" u2="&#xea;" k="20" />
+<hkern u1="k" u2="&#xe9;" k="20" />
+<hkern u1="k" u2="&#xe8;" k="20" />
+<hkern u1="k" u2="&#xe7;" k="20" />
+<hkern u1="k" u2="q" k="20" />
+<hkern u1="k" u2="g" k="20" />
+<hkern u1="k" u2="e" k="20" />
+<hkern u1="k" u2="d" k="20" />
+<hkern u1="k" u2="c" k="20" />
+<hkern u1="o" u2="&#x50f;" k="20" />
+<hkern u1="o" u2="&#x505;" k="11" />
+<hkern u1="o" u2="&#x4a1;" k="21" />
+<hkern u1="o" u2="&#x47f;" k="15" />
+<hkern u1="o" u2="&#x461;" k="16" />
+<hkern u1="o" u2="&#x442;" k="22" />
+<hkern u1="o" u2="&#x3c7;" k="22" />
+<hkern u1="o" u2="&#x3c4;" k="22" />
+<hkern u1="p" u2="&#x50f;" k="20" />
+<hkern u1="p" u2="&#x4a1;" k="20" />
+<hkern u1="p" u2="&#x442;" k="21" />
+<hkern u1="p" u2="&#x434;" k="18" />
+<hkern u1="p" u2="&#x3c7;" k="24" />
+<hkern u1="p" u2="&#x3c4;" k="22" />
+<hkern u1="r" u2="w" k="-17" />
+<hkern u1="r" u2="t" k="-17" />
+<hkern u1="r" u2="f" k="-15" />
+<hkern u1="v" u2="&#x47b;" k="15" />
+<hkern u1="v" u2="&#x434;" k="56" />
+<hkern u1="v" u2="&#x3c4;" k="-12" />
+<hkern u1="v" u2="&#x3c1;" k="22" />
+<hkern u1="v" u2="&#x3c0;" k="-11" />
+<hkern u1="v" u2="&#x3b4;" k="11" />
+<hkern u1="v" u2="f" k="-13" />
+<hkern u1="w" u2="&#x2026;" k="124" />
+<hkern u1="w" u2="&#x2025;" k="124" />
+<hkern u1="w" u2="&#x201e;" k="124" />
+<hkern u1="w" u2="&#x201a;" k="124" />
+<hkern u1="w" u2="&#x3a;" k="124" />
+<hkern u1="w" u2="&#x2e;" k="124" />
+<hkern u1="w" u2="&#x2c;" k="124" />
+<hkern u1="x" u2="&#x47b;" k="15" />
+<hkern u1="y" u2="&#x47b;" k="15" />
+<hkern u1="y" u2="&#x434;" k="56" />
+<hkern u1="y" u2="&#x3c4;" k="-12" />
+<hkern u1="y" u2="&#x3c1;" k="22" />
+<hkern u1="y" u2="&#x3c0;" k="-11" />
+<hkern u1="y" u2="&#x3b4;" k="11" />
+<hkern u1="y" u2="f" k="-13" />
+<hkern u1="&#x7b;" u2="&#x1ee6;" k="20" />
+<hkern u1="&#x7b;" u2="&#x1ee4;" k="20" />
+<hkern u1="&#x7b;" u2="&#x408;" k="20" />
+<hkern u1="&#x7b;" u2="&#x172;" k="20" />
+<hkern u1="&#x7b;" u2="&#x170;" k="20" />
+<hkern u1="&#x7b;" u2="&#x16e;" k="20" />
+<hkern u1="&#x7b;" u2="&#x16c;" k="20" />
+<hkern u1="&#x7b;" u2="&#x16a;" k="20" />
+<hkern u1="&#x7b;" u2="&#x168;" k="20" />
+<hkern u1="&#x7b;" u2="&#x134;" k="20" />
+<hkern u1="&#x7b;" u2="&#xdc;" k="20" />
+<hkern u1="&#x7b;" u2="&#xdb;" k="20" />
+<hkern u1="&#x7b;" u2="&#xda;" k="20" />
+<hkern u1="&#x7b;" u2="&#xd9;" k="20" />
+<hkern u1="&#x7b;" u2="U" k="20" />
+<hkern u1="&#x7b;" u2="J" k="20" />
+<hkern u1="&#xc0;" g2="T.smcp" k="57" />
+<hkern u1="&#xc0;" g2="U.smcp" k="15" />
+<hkern u1="&#xc0;" g2="V.smcp" k="51" />
+<hkern u1="&#xc0;" g2="W.smcp" k="35" />
+<hkern u1="&#xc0;" g2="Y.smcp" k="60" />
+<hkern u1="&#xc0;" u2="&#x50f;" k="57" />
+<hkern u1="&#xc0;" u2="&#x50e;" k="88" />
+<hkern u1="&#xc0;" u2="&#x506;" k="54" />
+<hkern u1="&#xc0;" u2="&#x504;" k="80" />
+<hkern u1="&#xc0;" u2="&#x4d8;" k="14" />
+<hkern u1="&#xc0;" u2="&#x4bd;" k="35" />
+<hkern u1="&#xc0;" u2="&#x4bc;" k="152" />
+<hkern u1="&#xc0;" u2="&#x4b9;" k="123" />
+<hkern u1="&#xc0;" u2="&#x4b8;" k="155" />
+<hkern u1="&#xc0;" u2="&#x4a1;" k="126" />
+<hkern u1="&#xc0;" u2="&#x442;" k="54" />
+<hkern u1="&#xc0;" u2="&#x42c;" k="59" />
+<hkern u1="&#xc0;" u2="&#x414;" k="-19" />
+<hkern u1="&#xc0;" u2="&#x3c4;" k="56" />
+<hkern u1="&#xc0;" u2="&#x3bb;" k="-17" />
+<hkern u1="&#xc0;" u2="&#x3a8;" k="47" />
+<hkern u1="&#xc0;" u2="&#x3a6;" k="27" />
+<hkern u1="&#xc0;" u2="&#x1af;" k="18" />
+<hkern u1="&#xc0;" u2="w" k="33" />
+<hkern u1="&#xc0;" u2="t" k="17" />
+<hkern u1="&#xc0;" u2="&#x3f;" k="80" />
+<hkern u1="&#xc1;" g2="T.smcp" k="57" />
+<hkern u1="&#xc1;" g2="U.smcp" k="15" />
+<hkern u1="&#xc1;" g2="V.smcp" k="51" />
+<hkern u1="&#xc1;" g2="W.smcp" k="35" />
+<hkern u1="&#xc1;" g2="Y.smcp" k="60" />
+<hkern u1="&#xc1;" u2="&#x50f;" k="57" />
+<hkern u1="&#xc1;" u2="&#x50e;" k="88" />
+<hkern u1="&#xc1;" u2="&#x506;" k="54" />
+<hkern u1="&#xc1;" u2="&#x504;" k="80" />
+<hkern u1="&#xc1;" u2="&#x4d8;" k="14" />
+<hkern u1="&#xc1;" u2="&#x4bd;" k="35" />
+<hkern u1="&#xc1;" u2="&#x4bc;" k="152" />
+<hkern u1="&#xc1;" u2="&#x4b9;" k="123" />
+<hkern u1="&#xc1;" u2="&#x4b8;" k="155" />
+<hkern u1="&#xc1;" u2="&#x4a1;" k="126" />
+<hkern u1="&#xc1;" u2="&#x442;" k="54" />
+<hkern u1="&#xc1;" u2="&#x42c;" k="59" />
+<hkern u1="&#xc1;" u2="&#x414;" k="-19" />
+<hkern u1="&#xc1;" u2="&#x3c4;" k="56" />
+<hkern u1="&#xc1;" u2="&#x3bb;" k="-17" />
+<hkern u1="&#xc1;" u2="&#x3a8;" k="47" />
+<hkern u1="&#xc1;" u2="&#x3a6;" k="27" />
+<hkern u1="&#xc1;" u2="&#x1af;" k="18" />
+<hkern u1="&#xc1;" u2="w" k="33" />
+<hkern u1="&#xc1;" u2="t" k="17" />
+<hkern u1="&#xc1;" u2="&#x3f;" k="80" />
+<hkern u1="&#xc2;" g2="T.smcp" k="57" />
+<hkern u1="&#xc2;" g2="U.smcp" k="15" />
+<hkern u1="&#xc2;" g2="V.smcp" k="51" />
+<hkern u1="&#xc2;" g2="W.smcp" k="35" />
+<hkern u1="&#xc2;" g2="Y.smcp" k="60" />
+<hkern u1="&#xc2;" u2="&#x50f;" k="57" />
+<hkern u1="&#xc2;" u2="&#x50e;" k="88" />
+<hkern u1="&#xc2;" u2="&#x506;" k="54" />
+<hkern u1="&#xc2;" u2="&#x504;" k="80" />
+<hkern u1="&#xc2;" u2="&#x4d8;" k="14" />
+<hkern u1="&#xc2;" u2="&#x4bd;" k="35" />
+<hkern u1="&#xc2;" u2="&#x4bc;" k="152" />
+<hkern u1="&#xc2;" u2="&#x4b9;" k="123" />
+<hkern u1="&#xc2;" u2="&#x4b8;" k="155" />
+<hkern u1="&#xc2;" u2="&#x4a1;" k="126" />
+<hkern u1="&#xc2;" u2="&#x442;" k="54" />
+<hkern u1="&#xc2;" u2="&#x42c;" k="59" />
+<hkern u1="&#xc2;" u2="&#x414;" k="-19" />
+<hkern u1="&#xc2;" u2="&#x3c4;" k="56" />
+<hkern u1="&#xc2;" u2="&#x3bb;" k="-17" />
+<hkern u1="&#xc2;" u2="&#x3a8;" k="47" />
+<hkern u1="&#xc2;" u2="&#x3a6;" k="27" />
+<hkern u1="&#xc2;" u2="&#x1af;" k="18" />
+<hkern u1="&#xc2;" u2="w" k="33" />
+<hkern u1="&#xc2;" u2="t" k="17" />
+<hkern u1="&#xc2;" u2="&#x3f;" k="80" />
+<hkern u1="&#xc3;" g2="T.smcp" k="57" />
+<hkern u1="&#xc3;" g2="U.smcp" k="15" />
+<hkern u1="&#xc3;" g2="V.smcp" k="51" />
+<hkern u1="&#xc3;" g2="W.smcp" k="35" />
+<hkern u1="&#xc3;" g2="Y.smcp" k="60" />
+<hkern u1="&#xc3;" u2="&#x50f;" k="57" />
+<hkern u1="&#xc3;" u2="&#x50e;" k="88" />
+<hkern u1="&#xc3;" u2="&#x506;" k="54" />
+<hkern u1="&#xc3;" u2="&#x504;" k="80" />
+<hkern u1="&#xc3;" u2="&#x4d8;" k="14" />
+<hkern u1="&#xc3;" u2="&#x4bd;" k="35" />
+<hkern u1="&#xc3;" u2="&#x4bc;" k="152" />
+<hkern u1="&#xc3;" u2="&#x4b9;" k="123" />
+<hkern u1="&#xc3;" u2="&#x4b8;" k="155" />
+<hkern u1="&#xc3;" u2="&#x4a1;" k="126" />
+<hkern u1="&#xc3;" u2="&#x442;" k="54" />
+<hkern u1="&#xc3;" u2="&#x42c;" k="59" />
+<hkern u1="&#xc3;" u2="&#x414;" k="-19" />
+<hkern u1="&#xc3;" u2="&#x3c4;" k="56" />
+<hkern u1="&#xc3;" u2="&#x3bb;" k="-17" />
+<hkern u1="&#xc3;" u2="&#x3a8;" k="47" />
+<hkern u1="&#xc3;" u2="&#x3a6;" k="27" />
+<hkern u1="&#xc3;" u2="&#x1af;" k="18" />
+<hkern u1="&#xc3;" u2="w" k="33" />
+<hkern u1="&#xc3;" u2="t" k="17" />
+<hkern u1="&#xc3;" u2="&#x3f;" k="80" />
+<hkern u1="&#xc4;" g2="T.smcp" k="57" />
+<hkern u1="&#xc4;" g2="U.smcp" k="15" />
+<hkern u1="&#xc4;" g2="V.smcp" k="51" />
+<hkern u1="&#xc4;" g2="W.smcp" k="35" />
+<hkern u1="&#xc4;" g2="Y.smcp" k="60" />
+<hkern u1="&#xc4;" u2="&#x50f;" k="57" />
+<hkern u1="&#xc4;" u2="&#x50e;" k="88" />
+<hkern u1="&#xc4;" u2="&#x506;" k="54" />
+<hkern u1="&#xc4;" u2="&#x504;" k="80" />
+<hkern u1="&#xc4;" u2="&#x4d8;" k="14" />
+<hkern u1="&#xc4;" u2="&#x4bd;" k="35" />
+<hkern u1="&#xc4;" u2="&#x4bc;" k="152" />
+<hkern u1="&#xc4;" u2="&#x4b9;" k="123" />
+<hkern u1="&#xc4;" u2="&#x4b8;" k="155" />
+<hkern u1="&#xc4;" u2="&#x4a1;" k="126" />
+<hkern u1="&#xc4;" u2="&#x442;" k="54" />
+<hkern u1="&#xc4;" u2="&#x42c;" k="59" />
+<hkern u1="&#xc4;" u2="&#x414;" k="-19" />
+<hkern u1="&#xc4;" u2="&#x3c4;" k="56" />
+<hkern u1="&#xc4;" u2="&#x3bb;" k="-17" />
+<hkern u1="&#xc4;" u2="&#x3a8;" k="47" />
+<hkern u1="&#xc4;" u2="&#x3a6;" k="27" />
+<hkern u1="&#xc4;" u2="&#x1af;" k="18" />
+<hkern u1="&#xc4;" u2="w" k="33" />
+<hkern u1="&#xc4;" u2="t" k="17" />
+<hkern u1="&#xc4;" u2="&#x3f;" k="80" />
+<hkern u1="&#xc5;" g2="T.smcp" k="57" />
+<hkern u1="&#xc5;" g2="U.smcp" k="15" />
+<hkern u1="&#xc5;" g2="V.smcp" k="51" />
+<hkern u1="&#xc5;" g2="W.smcp" k="35" />
+<hkern u1="&#xc5;" g2="Y.smcp" k="60" />
+<hkern u1="&#xc5;" u2="&#x50f;" k="57" />
+<hkern u1="&#xc5;" u2="&#x50e;" k="88" />
+<hkern u1="&#xc5;" u2="&#x506;" k="54" />
+<hkern u1="&#xc5;" u2="&#x504;" k="80" />
+<hkern u1="&#xc5;" u2="&#x4d8;" k="14" />
+<hkern u1="&#xc5;" u2="&#x4bd;" k="35" />
+<hkern u1="&#xc5;" u2="&#x4bc;" k="152" />
+<hkern u1="&#xc5;" u2="&#x4b9;" k="123" />
+<hkern u1="&#xc5;" u2="&#x4b8;" k="155" />
+<hkern u1="&#xc5;" u2="&#x4a1;" k="126" />
+<hkern u1="&#xc5;" u2="&#x442;" k="54" />
+<hkern u1="&#xc5;" u2="&#x42c;" k="59" />
+<hkern u1="&#xc5;" u2="&#x414;" k="-19" />
+<hkern u1="&#xc5;" u2="&#x3c4;" k="56" />
+<hkern u1="&#xc5;" u2="&#x3bb;" k="-17" />
+<hkern u1="&#xc5;" u2="&#x3a8;" k="47" />
+<hkern u1="&#xc5;" u2="&#x3a6;" k="27" />
+<hkern u1="&#xc5;" u2="&#x1af;" k="18" />
+<hkern u1="&#xc5;" u2="w" k="33" />
+<hkern u1="&#xc5;" u2="t" k="17" />
+<hkern u1="&#xc5;" u2="&#x3f;" k="80" />
+<hkern u1="&#xc7;" u2="&#x4bd;" k="19" />
+<hkern u1="&#xc7;" u2="&#x7d;" k="17" />
+<hkern u1="&#xc7;" u2="]" k="12" />
+<hkern u1="&#xc7;" u2="&#x29;" k="26" />
+<hkern u1="&#xc8;" g2="V.smcp" k="16" />
+<hkern u1="&#xc8;" g2="W.smcp" k="19" />
+<hkern u1="&#xc8;" g2="Y.smcp" k="16" />
+<hkern u1="&#xc8;" u2="w" k="22" />
+<hkern u1="&#xc8;" u2="f" k="18" />
+<hkern u1="&#xc9;" g2="V.smcp" k="16" />
+<hkern u1="&#xc9;" g2="W.smcp" k="19" />
+<hkern u1="&#xc9;" g2="Y.smcp" k="16" />
+<hkern u1="&#xc9;" u2="w" k="22" />
+<hkern u1="&#xc9;" u2="f" k="18" />
+<hkern u1="&#xca;" g2="V.smcp" k="16" />
+<hkern u1="&#xca;" g2="W.smcp" k="19" />
+<hkern u1="&#xca;" g2="Y.smcp" k="16" />
+<hkern u1="&#xca;" u2="w" k="22" />
+<hkern u1="&#xca;" u2="f" k="18" />
+<hkern u1="&#xcb;" g2="V.smcp" k="16" />
+<hkern u1="&#xcb;" g2="W.smcp" k="19" />
+<hkern u1="&#xcb;" g2="Y.smcp" k="16" />
+<hkern u1="&#xcb;" u2="w" k="22" />
+<hkern u1="&#xcb;" u2="f" k="18" />
+<hkern u1="&#xcc;" u2="&#x50e;" k="28" />
+<hkern u1="&#xcc;" u2="&#x506;" k="30" />
+<hkern u1="&#xcc;" u2="&#x504;" k="29" />
+<hkern u1="&#xcc;" u2="&#x4bc;" k="28" />
+<hkern u1="&#xcc;" u2="&#x4b9;" k="27" />
+<hkern u1="&#xcc;" u2="&#x4b8;" k="28" />
+<hkern u1="&#xcc;" u2="&#x434;" k="-21" />
+<hkern u1="&#xcc;" u2="&#x414;" k="-21" />
+<hkern u1="&#xcd;" u2="&#x50e;" k="28" />
+<hkern u1="&#xcd;" u2="&#x506;" k="30" />
+<hkern u1="&#xcd;" u2="&#x504;" k="29" />
+<hkern u1="&#xcd;" u2="&#x4bc;" k="28" />
+<hkern u1="&#xcd;" u2="&#x4b9;" k="27" />
+<hkern u1="&#xcd;" u2="&#x4b8;" k="28" />
+<hkern u1="&#xcd;" u2="&#x434;" k="-21" />
+<hkern u1="&#xcd;" u2="&#x414;" k="-21" />
+<hkern u1="&#xce;" u2="&#x50e;" k="28" />
+<hkern u1="&#xce;" u2="&#x506;" k="30" />
+<hkern u1="&#xce;" u2="&#x504;" k="29" />
+<hkern u1="&#xce;" u2="&#x4bc;" k="28" />
+<hkern u1="&#xce;" u2="&#x4b9;" k="27" />
+<hkern u1="&#xce;" u2="&#x4b8;" k="28" />
+<hkern u1="&#xce;" u2="&#x434;" k="-21" />
+<hkern u1="&#xce;" u2="&#x414;" k="-21" />
+<hkern u1="&#xcf;" u2="&#x50e;" k="28" />
+<hkern u1="&#xcf;" u2="&#x506;" k="30" />
+<hkern u1="&#xcf;" u2="&#x504;" k="29" />
+<hkern u1="&#xcf;" u2="&#x4bc;" k="28" />
+<hkern u1="&#xcf;" u2="&#x4b9;" k="27" />
+<hkern u1="&#xcf;" u2="&#x4b8;" k="28" />
+<hkern u1="&#xcf;" u2="&#x434;" k="-21" />
+<hkern u1="&#xcf;" u2="&#x414;" k="-21" />
+<hkern u1="&#xd0;" g2="X.smcp" k="11" />
+<hkern u1="&#xd0;" u2="&#x50e;" k="32" />
+<hkern u1="&#xd0;" u2="&#x42c;" k="32" />
+<hkern u1="&#xd0;" u2="&#x414;" k="33" />
+<hkern u1="&#xd0;" u2="&#x3bb;" k="22" />
+<hkern u1="&#xd0;" u2="&#x3a3;" k="16" />
+<hkern u1="&#xd0;" u2="&#x39e;" k="13" />
+<hkern u1="&#xd0;" u2="&#xc6;" k="33" />
+<hkern u1="&#xd1;" u2="&#x50e;" k="28" />
+<hkern u1="&#xd1;" u2="&#x506;" k="30" />
+<hkern u1="&#xd1;" u2="&#x504;" k="29" />
+<hkern u1="&#xd1;" u2="&#x4bc;" k="28" />
+<hkern u1="&#xd1;" u2="&#x4b9;" k="27" />
+<hkern u1="&#xd1;" u2="&#x4b8;" k="28" />
+<hkern u1="&#xd1;" u2="&#x434;" k="-21" />
+<hkern u1="&#xd1;" u2="&#x414;" k="-21" />
+<hkern u1="&#xd2;" g2="X.smcp" k="11" />
+<hkern u1="&#xd2;" u2="&#x50e;" k="32" />
+<hkern u1="&#xd2;" u2="&#x42c;" k="32" />
+<hkern u1="&#xd2;" u2="&#x414;" k="33" />
+<hkern u1="&#xd2;" u2="&#x3bb;" k="22" />
+<hkern u1="&#xd2;" u2="&#x3a3;" k="16" />
+<hkern u1="&#xd2;" u2="&#x39e;" k="13" />
+<hkern u1="&#xd2;" u2="&#xc6;" k="33" />
+<hkern u1="&#xd3;" g2="X.smcp" k="11" />
+<hkern u1="&#xd3;" u2="&#x50e;" k="32" />
+<hkern u1="&#xd3;" u2="&#x42c;" k="32" />
+<hkern u1="&#xd3;" u2="&#x414;" k="33" />
+<hkern u1="&#xd3;" u2="&#x3bb;" k="22" />
+<hkern u1="&#xd3;" u2="&#x3a3;" k="16" />
+<hkern u1="&#xd3;" u2="&#x39e;" k="13" />
+<hkern u1="&#xd3;" u2="&#xc6;" k="33" />
+<hkern u1="&#xd4;" g2="X.smcp" k="11" />
+<hkern u1="&#xd4;" u2="&#x50e;" k="32" />
+<hkern u1="&#xd4;" u2="&#x42c;" k="32" />
+<hkern u1="&#xd4;" u2="&#x414;" k="33" />
+<hkern u1="&#xd4;" u2="&#x3bb;" k="22" />
+<hkern u1="&#xd4;" u2="&#x3a3;" k="16" />
+<hkern u1="&#xd4;" u2="&#x39e;" k="13" />
+<hkern u1="&#xd4;" u2="&#xc6;" k="33" />
+<hkern u1="&#xd5;" g2="X.smcp" k="11" />
+<hkern u1="&#xd5;" u2="&#x50e;" k="32" />
+<hkern u1="&#xd5;" u2="&#x42c;" k="32" />
+<hkern u1="&#xd5;" u2="&#x414;" k="33" />
+<hkern u1="&#xd5;" u2="&#x3bb;" k="22" />
+<hkern u1="&#xd5;" u2="&#x3a3;" k="16" />
+<hkern u1="&#xd5;" u2="&#x39e;" k="13" />
+<hkern u1="&#xd5;" u2="&#xc6;" k="33" />
+<hkern u1="&#xd6;" g2="X.smcp" k="11" />
+<hkern u1="&#xd6;" u2="&#x50e;" k="32" />
+<hkern u1="&#xd6;" u2="&#x42c;" k="32" />
+<hkern u1="&#xd6;" u2="&#x414;" k="33" />
+<hkern u1="&#xd6;" u2="&#x3bb;" k="22" />
+<hkern u1="&#xd6;" u2="&#x3a3;" k="16" />
+<hkern u1="&#xd6;" u2="&#x39e;" k="13" />
+<hkern u1="&#xd6;" u2="&#xc6;" k="33" />
+<hkern u1="&#xdd;" g2="Q.smcp" k="53" />
+<hkern u1="&#xdd;" g2="T.smcp" k="13" />
+<hkern u1="&#xdd;" g2="W.smcp" k="13" />
+<hkern u1="&#xdd;" g2="X.smcp" k="17" />
+<hkern u1="&#xdd;" u2="&#x2022;" k="45" />
+<hkern u1="&#xdd;" u2="&#x3c9;" k="57" />
+<hkern u1="&#xdd;" u2="&#x3c8;" k="38" />
+<hkern u1="&#xdd;" u2="&#x3c7;" k="63" />
+<hkern u1="&#xdd;" u2="&#x3c6;" k="53" />
+<hkern u1="&#xdd;" u2="&#x3c4;" k="23" />
+<hkern u1="&#xdd;" u2="&#x3c1;" k="70" />
+<hkern u1="&#xdd;" u2="&#x3c0;" k="24" />
+<hkern u1="&#xdd;" u2="&#x3b9;" k="42" />
+<hkern u1="&#xdd;" u2="&#x3b8;" k="23" />
+<hkern u1="&#xdd;" u2="&#x3b6;" k="-13" />
+<hkern u1="&#xdd;" u2="&#x3b5;" k="58" />
+<hkern u1="&#xdd;" u2="&#x3b4;" k="18" />
+<hkern u1="&#xdd;" u2="&#x3b2;" k="22" />
+<hkern u1="&#xdd;" u2="&#x3a6;" k="48" />
+<hkern u1="&#xdd;" u2="&#xf8;" k="64" />
+<hkern u1="&#xdd;" u2="&#xe6;" k="63" />
+<hkern u1="&#xdd;" u2="&#xc6;" k="96" />
+<hkern u1="&#xdd;" u2="&#xbb;" k="51" />
+<hkern u1="&#xdd;" u2="&#xab;" k="82" />
+<hkern u1="&#xdd;" u2="&#x7d;" k="-19" />
+<hkern u1="&#xdd;" u2="t" k="22" />
+<hkern u1="&#xdd;" u2="r" k="40" />
+<hkern u1="&#xdd;" u2="f" k="22" />
+<hkern u1="&#xdd;" u2="]" k="-18" />
+<hkern u1="&#xdd;" u2="&#x2a;" k="49" />
+<hkern u1="&#xdd;" u2="&#x29;" k="-20" />
+<hkern u1="&#xdd;" u2="&#x26;" k="30" />
+<hkern u1="&#xe0;" u2="&#x50f;" k="15" />
+<hkern u1="&#xe0;" u2="&#x507;" k="13" />
+<hkern u1="&#xe0;" u2="&#x505;" k="13" />
+<hkern u1="&#xe0;" u2="&#x4a1;" k="15" />
+<hkern u1="&#xe0;" u2="&#x47f;" k="13" />
+<hkern u1="&#xe0;" u2="&#x461;" k="15" />
+<hkern u1="&#xe0;" u2="&#x442;" k="16" />
+<hkern u1="&#xe1;" u2="&#x50f;" k="15" />
+<hkern u1="&#xe1;" u2="&#x507;" k="13" />
+<hkern u1="&#xe1;" u2="&#x505;" k="13" />
+<hkern u1="&#xe1;" u2="&#x4a1;" k="15" />
+<hkern u1="&#xe1;" u2="&#x47f;" k="13" />
+<hkern u1="&#xe1;" u2="&#x461;" k="15" />
+<hkern u1="&#xe1;" u2="&#x442;" k="16" />
+<hkern u1="&#xe2;" u2="&#x50f;" k="15" />
+<hkern u1="&#xe2;" u2="&#x507;" k="13" />
+<hkern u1="&#xe2;" u2="&#x505;" k="13" />
+<hkern u1="&#xe2;" u2="&#x4a1;" k="15" />
+<hkern u1="&#xe2;" u2="&#x47f;" k="13" />
+<hkern u1="&#xe2;" u2="&#x461;" k="15" />
+<hkern u1="&#xe2;" u2="&#x442;" k="16" />
+<hkern u1="&#xe3;" u2="&#x50f;" k="15" />
+<hkern u1="&#xe3;" u2="&#x507;" k="13" />
+<hkern u1="&#xe3;" u2="&#x505;" k="13" />
+<hkern u1="&#xe3;" u2="&#x4a1;" k="15" />
+<hkern u1="&#xe3;" u2="&#x47f;" k="13" />
+<hkern u1="&#xe3;" u2="&#x461;" k="15" />
+<hkern u1="&#xe3;" u2="&#x442;" k="16" />
+<hkern u1="&#xe4;" u2="&#x50f;" k="15" />
+<hkern u1="&#xe4;" u2="&#x507;" k="13" />
+<hkern u1="&#xe4;" u2="&#x505;" k="13" />
+<hkern u1="&#xe4;" u2="&#x4a1;" k="15" />
+<hkern u1="&#xe4;" u2="&#x47f;" k="13" />
+<hkern u1="&#xe4;" u2="&#x461;" k="15" />
+<hkern u1="&#xe4;" u2="&#x442;" k="16" />
+<hkern u1="&#xe5;" u2="&#x50f;" k="15" />
+<hkern u1="&#xe5;" u2="&#x507;" k="13" />
+<hkern u1="&#xe5;" u2="&#x505;" k="13" />
+<hkern u1="&#xe5;" u2="&#x4a1;" k="15" />
+<hkern u1="&#xe5;" u2="&#x47f;" k="13" />
+<hkern u1="&#xe5;" u2="&#x461;" k="15" />
+<hkern u1="&#xe5;" u2="&#x442;" k="16" />
+<hkern u1="&#xe8;" u2="&#x442;" k="11" />
+<hkern u1="&#xe9;" u2="&#x442;" k="11" />
+<hkern u1="&#xea;" u2="&#x442;" k="11" />
+<hkern u1="&#xeb;" u2="&#x442;" k="11" />
+<hkern u1="&#xf2;" u2="&#x50f;" k="20" />
+<hkern u1="&#xf2;" u2="&#x505;" k="11" />
+<hkern u1="&#xf2;" u2="&#x4a1;" k="21" />
+<hkern u1="&#xf2;" u2="&#x47f;" k="15" />
+<hkern u1="&#xf2;" u2="&#x461;" k="16" />
+<hkern u1="&#xf2;" u2="&#x442;" k="22" />
+<hkern u1="&#xf2;" u2="&#x3c7;" k="22" />
+<hkern u1="&#xf2;" u2="&#x3c4;" k="22" />
+<hkern u1="&#xf3;" u2="&#x50f;" k="20" />
+<hkern u1="&#xf3;" u2="&#x505;" k="11" />
+<hkern u1="&#xf3;" u2="&#x4a1;" k="21" />
+<hkern u1="&#xf3;" u2="&#x47f;" k="15" />
+<hkern u1="&#xf3;" u2="&#x461;" k="16" />
+<hkern u1="&#xf3;" u2="&#x442;" k="22" />
+<hkern u1="&#xf3;" u2="&#x3c7;" k="22" />
+<hkern u1="&#xf3;" u2="&#x3c4;" k="22" />
+<hkern u1="&#xf4;" u2="&#x50f;" k="20" />
+<hkern u1="&#xf4;" u2="&#x505;" k="11" />
+<hkern u1="&#xf4;" u2="&#x4a1;" k="21" />
+<hkern u1="&#xf4;" u2="&#x47f;" k="15" />
+<hkern u1="&#xf4;" u2="&#x461;" k="16" />
+<hkern u1="&#xf4;" u2="&#x442;" k="22" />
+<hkern u1="&#xf4;" u2="&#x3c7;" k="22" />
+<hkern u1="&#xf4;" u2="&#x3c4;" k="22" />
+<hkern u1="&#xf5;" u2="&#x50f;" k="20" />
+<hkern u1="&#xf5;" u2="&#x505;" k="11" />
+<hkern u1="&#xf5;" u2="&#x4a1;" k="21" />
+<hkern u1="&#xf5;" u2="&#x47f;" k="15" />
+<hkern u1="&#xf5;" u2="&#x461;" k="16" />
+<hkern u1="&#xf5;" u2="&#x442;" k="22" />
+<hkern u1="&#xf5;" u2="&#x3c7;" k="22" />
+<hkern u1="&#xf5;" u2="&#x3c4;" k="22" />
+<hkern u1="&#xf6;" u2="&#x50f;" k="20" />
+<hkern u1="&#xf6;" u2="&#x505;" k="11" />
+<hkern u1="&#xf6;" u2="&#x4a1;" k="21" />
+<hkern u1="&#xf6;" u2="&#x47f;" k="15" />
+<hkern u1="&#xf6;" u2="&#x461;" k="16" />
+<hkern u1="&#xf6;" u2="&#x442;" k="22" />
+<hkern u1="&#xf6;" u2="&#x3c7;" k="22" />
+<hkern u1="&#xf6;" u2="&#x3c4;" k="22" />
+<hkern u1="&#xfd;" u2="&#x47b;" k="15" />
+<hkern u1="&#xfd;" u2="&#x434;" k="56" />
+<hkern u1="&#xfd;" u2="&#x3c4;" k="-12" />
+<hkern u1="&#xfd;" u2="&#x3c1;" k="22" />
+<hkern u1="&#xfd;" u2="&#x3c0;" k="-11" />
+<hkern u1="&#xfd;" u2="&#x3b4;" k="11" />
+<hkern u1="&#xfd;" u2="f" k="-13" />
+<hkern u1="&#xfe;" u2="&#x50f;" k="20" />
+<hkern u1="&#xfe;" u2="&#x4a1;" k="20" />
+<hkern u1="&#xfe;" u2="&#x442;" k="21" />
+<hkern u1="&#xfe;" u2="&#x434;" k="18" />
+<hkern u1="&#xfe;" u2="&#x3c7;" k="24" />
+<hkern u1="&#xfe;" u2="&#x3c4;" k="22" />
+<hkern u1="&#xff;" u2="&#x47b;" k="15" />
+<hkern u1="&#xff;" u2="&#x434;" k="56" />
+<hkern u1="&#xff;" u2="&#x3c4;" k="-12" />
+<hkern u1="&#xff;" u2="&#x3c1;" k="22" />
+<hkern u1="&#xff;" u2="&#x3c0;" k="-11" />
+<hkern u1="&#xff;" u2="&#x3b4;" k="11" />
+<hkern u1="&#xff;" u2="f" k="-13" />
+<hkern u1="&#x100;" g2="T.smcp" k="57" />
+<hkern u1="&#x100;" g2="U.smcp" k="15" />
+<hkern u1="&#x100;" g2="V.smcp" k="51" />
+<hkern u1="&#x100;" g2="W.smcp" k="35" />
+<hkern u1="&#x100;" g2="Y.smcp" k="60" />
+<hkern u1="&#x100;" u2="&#x50f;" k="57" />
+<hkern u1="&#x100;" u2="&#x50e;" k="88" />
+<hkern u1="&#x100;" u2="&#x506;" k="54" />
+<hkern u1="&#x100;" u2="&#x504;" k="80" />
+<hkern u1="&#x100;" u2="&#x4d8;" k="14" />
+<hkern u1="&#x100;" u2="&#x4bd;" k="35" />
+<hkern u1="&#x100;" u2="&#x4bc;" k="152" />
+<hkern u1="&#x100;" u2="&#x4b9;" k="123" />
+<hkern u1="&#x100;" u2="&#x4b8;" k="155" />
+<hkern u1="&#x100;" u2="&#x4a1;" k="126" />
+<hkern u1="&#x100;" u2="&#x442;" k="54" />
+<hkern u1="&#x100;" u2="&#x42c;" k="59" />
+<hkern u1="&#x100;" u2="&#x414;" k="-19" />
+<hkern u1="&#x100;" u2="&#x3c4;" k="56" />
+<hkern u1="&#x100;" u2="&#x3bb;" k="-17" />
+<hkern u1="&#x100;" u2="&#x3a8;" k="47" />
+<hkern u1="&#x100;" u2="&#x3a6;" k="27" />
+<hkern u1="&#x100;" u2="&#x1af;" k="18" />
+<hkern u1="&#x100;" u2="w" k="33" />
+<hkern u1="&#x100;" u2="t" k="17" />
+<hkern u1="&#x100;" u2="&#x3f;" k="80" />
+<hkern u1="&#x101;" u2="&#x50f;" k="15" />
+<hkern u1="&#x101;" u2="&#x507;" k="13" />
+<hkern u1="&#x101;" u2="&#x505;" k="13" />
+<hkern u1="&#x101;" u2="&#x4a1;" k="15" />
+<hkern u1="&#x101;" u2="&#x47f;" k="13" />
+<hkern u1="&#x101;" u2="&#x461;" k="15" />
+<hkern u1="&#x101;" u2="&#x442;" k="16" />
+<hkern u1="&#x102;" g2="T.smcp" k="57" />
+<hkern u1="&#x102;" g2="U.smcp" k="15" />
+<hkern u1="&#x102;" g2="V.smcp" k="51" />
+<hkern u1="&#x102;" g2="W.smcp" k="35" />
+<hkern u1="&#x102;" g2="Y.smcp" k="60" />
+<hkern u1="&#x102;" u2="&#x50f;" k="57" />
+<hkern u1="&#x102;" u2="&#x50e;" k="88" />
+<hkern u1="&#x102;" u2="&#x506;" k="54" />
+<hkern u1="&#x102;" u2="&#x504;" k="80" />
+<hkern u1="&#x102;" u2="&#x4d8;" k="14" />
+<hkern u1="&#x102;" u2="&#x4bd;" k="35" />
+<hkern u1="&#x102;" u2="&#x4bc;" k="152" />
+<hkern u1="&#x102;" u2="&#x4b9;" k="123" />
+<hkern u1="&#x102;" u2="&#x4b8;" k="155" />
+<hkern u1="&#x102;" u2="&#x4a1;" k="126" />
+<hkern u1="&#x102;" u2="&#x442;" k="54" />
+<hkern u1="&#x102;" u2="&#x42c;" k="59" />
+<hkern u1="&#x102;" u2="&#x414;" k="-19" />
+<hkern u1="&#x102;" u2="&#x3c4;" k="56" />
+<hkern u1="&#x102;" u2="&#x3bb;" k="-17" />
+<hkern u1="&#x102;" u2="&#x3a8;" k="47" />
+<hkern u1="&#x102;" u2="&#x3a6;" k="27" />
+<hkern u1="&#x102;" u2="&#x1af;" k="18" />
+<hkern u1="&#x102;" u2="w" k="33" />
+<hkern u1="&#x102;" u2="t" k="17" />
+<hkern u1="&#x102;" u2="&#x3f;" k="80" />
+<hkern u1="&#x103;" u2="&#x50f;" k="15" />
+<hkern u1="&#x103;" u2="&#x507;" k="13" />
+<hkern u1="&#x103;" u2="&#x505;" k="13" />
+<hkern u1="&#x103;" u2="&#x4a1;" k="15" />
+<hkern u1="&#x103;" u2="&#x47f;" k="13" />
+<hkern u1="&#x103;" u2="&#x461;" k="15" />
+<hkern u1="&#x103;" u2="&#x442;" k="16" />
+<hkern u1="&#x104;" g2="T.smcp" k="57" />
+<hkern u1="&#x104;" g2="U.smcp" k="15" />
+<hkern u1="&#x104;" g2="V.smcp" k="51" />
+<hkern u1="&#x104;" g2="W.smcp" k="35" />
+<hkern u1="&#x104;" g2="Y.smcp" k="60" />
+<hkern u1="&#x104;" u2="&#x50f;" k="57" />
+<hkern u1="&#x104;" u2="&#x50e;" k="88" />
+<hkern u1="&#x104;" u2="&#x506;" k="54" />
+<hkern u1="&#x104;" u2="&#x504;" k="80" />
+<hkern u1="&#x104;" u2="&#x4d8;" k="14" />
+<hkern u1="&#x104;" u2="&#x4bd;" k="35" />
+<hkern u1="&#x104;" u2="&#x4bc;" k="152" />
+<hkern u1="&#x104;" u2="&#x4b9;" k="123" />
+<hkern u1="&#x104;" u2="&#x4b8;" k="155" />
+<hkern u1="&#x104;" u2="&#x4a1;" k="126" />
+<hkern u1="&#x104;" u2="&#x442;" k="54" />
+<hkern u1="&#x104;" u2="&#x42c;" k="59" />
+<hkern u1="&#x104;" u2="&#x414;" k="-19" />
+<hkern u1="&#x104;" u2="&#x3c4;" k="56" />
+<hkern u1="&#x104;" u2="&#x3bb;" k="-17" />
+<hkern u1="&#x104;" u2="&#x3a8;" k="47" />
+<hkern u1="&#x104;" u2="&#x3a6;" k="27" />
+<hkern u1="&#x104;" u2="&#x1af;" k="18" />
+<hkern u1="&#x104;" u2="w" k="33" />
+<hkern u1="&#x104;" u2="t" k="17" />
+<hkern u1="&#x104;" u2="&#x3f;" k="80" />
+<hkern u1="&#x105;" u2="&#x50f;" k="15" />
+<hkern u1="&#x105;" u2="&#x507;" k="13" />
+<hkern u1="&#x105;" u2="&#x505;" k="13" />
+<hkern u1="&#x105;" u2="&#x4a1;" k="15" />
+<hkern u1="&#x105;" u2="&#x47f;" k="13" />
+<hkern u1="&#x105;" u2="&#x461;" k="15" />
+<hkern u1="&#x105;" u2="&#x442;" k="16" />
+<hkern u1="&#x106;" u2="&#x4bd;" k="19" />
+<hkern u1="&#x106;" u2="&#x7d;" k="17" />
+<hkern u1="&#x106;" u2="]" k="12" />
+<hkern u1="&#x106;" u2="&#x29;" k="26" />
+<hkern u1="&#x108;" u2="&#x4bd;" k="19" />
+<hkern u1="&#x108;" u2="&#x7d;" k="17" />
+<hkern u1="&#x108;" u2="]" k="12" />
+<hkern u1="&#x108;" u2="&#x29;" k="26" />
+<hkern u1="&#x10a;" u2="&#x4bd;" k="19" />
+<hkern u1="&#x10a;" u2="&#x7d;" k="17" />
+<hkern u1="&#x10a;" u2="]" k="12" />
+<hkern u1="&#x10a;" u2="&#x29;" k="26" />
+<hkern u1="&#x10c;" u2="&#x4bd;" k="19" />
+<hkern u1="&#x10c;" u2="&#x7d;" k="17" />
+<hkern u1="&#x10c;" u2="]" k="12" />
+<hkern u1="&#x10c;" u2="&#x29;" k="26" />
+<hkern u1="&#x10e;" g2="X.smcp" k="11" />
+<hkern u1="&#x10e;" u2="&#x50e;" k="32" />
+<hkern u1="&#x10e;" u2="&#x42c;" k="32" />
+<hkern u1="&#x10e;" u2="&#x414;" k="33" />
+<hkern u1="&#x10e;" u2="&#x3bb;" k="22" />
+<hkern u1="&#x10e;" u2="&#x3a3;" k="16" />
+<hkern u1="&#x10e;" u2="&#x39e;" k="13" />
+<hkern u1="&#x10e;" u2="&#xc6;" k="33" />
+<hkern u1="&#x110;" g2="X.smcp" k="11" />
+<hkern u1="&#x110;" u2="&#x50e;" k="32" />
+<hkern u1="&#x110;" u2="&#x42c;" k="32" />
+<hkern u1="&#x110;" u2="&#x414;" k="33" />
+<hkern u1="&#x110;" u2="&#x3bb;" k="22" />
+<hkern u1="&#x110;" u2="&#x3a3;" k="16" />
+<hkern u1="&#x110;" u2="&#x39e;" k="13" />
+<hkern u1="&#x110;" u2="&#xc6;" k="33" />
+<hkern u1="&#x112;" g2="V.smcp" k="16" />
+<hkern u1="&#x112;" g2="W.smcp" k="19" />
+<hkern u1="&#x112;" g2="Y.smcp" k="16" />
+<hkern u1="&#x112;" u2="w" k="22" />
+<hkern u1="&#x112;" u2="f" k="18" />
+<hkern u1="&#x113;" u2="&#x442;" k="11" />
+<hkern u1="&#x114;" g2="V.smcp" k="16" />
+<hkern u1="&#x114;" g2="W.smcp" k="19" />
+<hkern u1="&#x114;" g2="Y.smcp" k="16" />
+<hkern u1="&#x114;" u2="w" k="22" />
+<hkern u1="&#x114;" u2="f" k="18" />
+<hkern u1="&#x115;" u2="&#x442;" k="11" />
+<hkern u1="&#x116;" g2="V.smcp" k="16" />
+<hkern u1="&#x116;" g2="W.smcp" k="19" />
+<hkern u1="&#x116;" g2="Y.smcp" k="16" />
+<hkern u1="&#x116;" u2="w" k="22" />
+<hkern u1="&#x116;" u2="f" k="18" />
+<hkern u1="&#x117;" u2="&#x442;" k="11" />
+<hkern u1="&#x118;" g2="V.smcp" k="16" />
+<hkern u1="&#x118;" g2="W.smcp" k="19" />
+<hkern u1="&#x118;" g2="Y.smcp" k="16" />
+<hkern u1="&#x118;" u2="w" k="22" />
+<hkern u1="&#x118;" u2="f" k="18" />
+<hkern u1="&#x119;" u2="&#x442;" k="11" />
+<hkern u1="&#x11a;" g2="V.smcp" k="16" />
+<hkern u1="&#x11a;" g2="W.smcp" k="19" />
+<hkern u1="&#x11a;" g2="Y.smcp" k="16" />
+<hkern u1="&#x11a;" u2="w" k="22" />
+<hkern u1="&#x11a;" u2="f" k="18" />
+<hkern u1="&#x11b;" u2="&#x442;" k="11" />
+<hkern u1="&#x124;" u2="&#x50e;" k="28" />
+<hkern u1="&#x124;" u2="&#x506;" k="30" />
+<hkern u1="&#x124;" u2="&#x504;" k="29" />
+<hkern u1="&#x124;" u2="&#x4bc;" k="28" />
+<hkern u1="&#x124;" u2="&#x4b9;" k="27" />
+<hkern u1="&#x124;" u2="&#x4b8;" k="28" />
+<hkern u1="&#x124;" u2="&#x434;" k="-21" />
+<hkern u1="&#x124;" u2="&#x414;" k="-21" />
+<hkern u1="&#x128;" u2="&#x50e;" k="28" />
+<hkern u1="&#x128;" u2="&#x506;" k="30" />
+<hkern u1="&#x128;" u2="&#x504;" k="29" />
+<hkern u1="&#x128;" u2="&#x4bc;" k="28" />
+<hkern u1="&#x128;" u2="&#x4b9;" k="27" />
+<hkern u1="&#x128;" u2="&#x4b8;" k="28" />
+<hkern u1="&#x128;" u2="&#x434;" k="-21" />
+<hkern u1="&#x128;" u2="&#x414;" k="-21" />
+<hkern u1="&#x12a;" u2="&#x50e;" k="28" />
+<hkern u1="&#x12a;" u2="&#x506;" k="30" />
+<hkern u1="&#x12a;" u2="&#x504;" k="29" />
+<hkern u1="&#x12a;" u2="&#x4bc;" k="28" />
+<hkern u1="&#x12a;" u2="&#x4b9;" k="27" />
+<hkern u1="&#x12a;" u2="&#x4b8;" k="28" />
+<hkern u1="&#x12a;" u2="&#x434;" k="-21" />
+<hkern u1="&#x12a;" u2="&#x414;" k="-21" />
+<hkern u1="&#x12c;" u2="&#x50e;" k="28" />
+<hkern u1="&#x12c;" u2="&#x506;" k="30" />
+<hkern u1="&#x12c;" u2="&#x504;" k="29" />
+<hkern u1="&#x12c;" u2="&#x4bc;" k="28" />
+<hkern u1="&#x12c;" u2="&#x4b9;" k="27" />
+<hkern u1="&#x12c;" u2="&#x4b8;" k="28" />
+<hkern u1="&#x12c;" u2="&#x434;" k="-21" />
+<hkern u1="&#x12c;" u2="&#x414;" k="-21" />
+<hkern u1="&#x12e;" u2="&#x50e;" k="28" />
+<hkern u1="&#x12e;" u2="&#x506;" k="30" />
+<hkern u1="&#x12e;" u2="&#x504;" k="29" />
+<hkern u1="&#x12e;" u2="&#x4bc;" k="28" />
+<hkern u1="&#x12e;" u2="&#x4b9;" k="27" />
+<hkern u1="&#x12e;" u2="&#x4b8;" k="28" />
+<hkern u1="&#x12e;" u2="&#x434;" k="-21" />
+<hkern u1="&#x12e;" u2="&#x414;" k="-21" />
+<hkern u1="&#x130;" u2="&#x50e;" k="28" />
+<hkern u1="&#x130;" u2="&#x506;" k="30" />
+<hkern u1="&#x130;" u2="&#x504;" k="29" />
+<hkern u1="&#x130;" u2="&#x4bc;" k="28" />
+<hkern u1="&#x130;" u2="&#x4b9;" k="27" />
+<hkern u1="&#x130;" u2="&#x4b8;" k="28" />
+<hkern u1="&#x130;" u2="&#x434;" k="-21" />
+<hkern u1="&#x130;" u2="&#x414;" k="-21" />
+<hkern u1="&#x136;" g2="Q.smcp" k="25" />
+<hkern u1="&#x136;" u2="&#x510;" k="17" />
+<hkern u1="&#x136;" u2="&#x50f;" k="53" />
+<hkern u1="&#x136;" u2="&#x507;" k="52" />
+<hkern u1="&#x136;" u2="&#x505;" k="52" />
+<hkern u1="&#x136;" u2="&#x4d8;" k="28" />
+<hkern u1="&#x136;" u2="&#x4b9;" k="59" />
+<hkern u1="&#x136;" u2="&#x4a1;" k="96" />
+<hkern u1="&#x136;" u2="&#x47f;" k="56" />
+<hkern u1="&#x136;" u2="&#x47b;" k="46" />
+<hkern u1="&#x136;" u2="&#x461;" k="78" />
+<hkern u1="&#x136;" u2="&#x442;" k="71" />
+<hkern u1="&#x136;" u2="&#x431;" k="41" />
+<hkern u1="&#x136;" u2="&#x3c4;" k="76" />
+<hkern u1="&#x136;" u2="&#x3a6;" k="59" />
+<hkern u1="&#x136;" u2="w" k="63" />
+<hkern u1="&#x139;" g2="Q.smcp" k="14" />
+<hkern u1="&#x139;" g2="T.smcp" k="69" />
+<hkern u1="&#x139;" g2="U.smcp" k="18" />
+<hkern u1="&#x139;" g2="V.smcp" k="73" />
+<hkern u1="&#x139;" g2="W.smcp" k="42" />
+<hkern u1="&#x139;" g2="Y.smcp" k="75" />
+<hkern u1="&#x139;" u2="w" k="52" />
+<hkern u1="&#x13b;" g2="Q.smcp" k="14" />
+<hkern u1="&#x13b;" g2="T.smcp" k="69" />
+<hkern u1="&#x13b;" g2="U.smcp" k="18" />
+<hkern u1="&#x13b;" g2="V.smcp" k="73" />
+<hkern u1="&#x13b;" g2="W.smcp" k="42" />
+<hkern u1="&#x13b;" g2="Y.smcp" k="75" />
+<hkern u1="&#x13b;" u2="w" k="52" />
+<hkern u1="&#x13d;" g2="Q.smcp" k="14" />
+<hkern u1="&#x13d;" g2="T.smcp" k="69" />
+<hkern u1="&#x13d;" g2="U.smcp" k="18" />
+<hkern u1="&#x13d;" g2="V.smcp" k="73" />
+<hkern u1="&#x13d;" g2="W.smcp" k="42" />
+<hkern u1="&#x13d;" g2="Y.smcp" k="75" />
+<hkern u1="&#x13d;" u2="w" k="52" />
+<hkern u1="&#x13f;" g2="Q.smcp" k="14" />
+<hkern u1="&#x13f;" g2="T.smcp" k="69" />
+<hkern u1="&#x13f;" g2="U.smcp" k="18" />
+<hkern u1="&#x13f;" g2="V.smcp" k="73" />
+<hkern u1="&#x13f;" g2="W.smcp" k="42" />
+<hkern u1="&#x13f;" g2="Y.smcp" k="75" />
+<hkern u1="&#x13f;" u2="w" k="52" />
+<hkern u1="&#x143;" u2="&#x50e;" k="28" />
+<hkern u1="&#x143;" u2="&#x506;" k="30" />
+<hkern u1="&#x143;" u2="&#x504;" k="29" />
+<hkern u1="&#x143;" u2="&#x4bc;" k="28" />
+<hkern u1="&#x143;" u2="&#x4b9;" k="27" />
+<hkern u1="&#x143;" u2="&#x4b8;" k="28" />
+<hkern u1="&#x143;" u2="&#x434;" k="-21" />
+<hkern u1="&#x143;" u2="&#x414;" k="-21" />
+<hkern u1="&#x145;" u2="&#x50e;" k="28" />
+<hkern u1="&#x145;" u2="&#x506;" k="30" />
+<hkern u1="&#x145;" u2="&#x504;" k="29" />
+<hkern u1="&#x145;" u2="&#x4bc;" k="28" />
+<hkern u1="&#x145;" u2="&#x4b9;" k="27" />
+<hkern u1="&#x145;" u2="&#x4b8;" k="28" />
+<hkern u1="&#x145;" u2="&#x434;" k="-21" />
+<hkern u1="&#x145;" u2="&#x414;" k="-21" />
+<hkern u1="&#x147;" u2="&#x50e;" k="28" />
+<hkern u1="&#x147;" u2="&#x506;" k="30" />
+<hkern u1="&#x147;" u2="&#x504;" k="29" />
+<hkern u1="&#x147;" u2="&#x4bc;" k="28" />
+<hkern u1="&#x147;" u2="&#x4b9;" k="27" />
+<hkern u1="&#x147;" u2="&#x4b8;" k="28" />
+<hkern u1="&#x147;" u2="&#x434;" k="-21" />
+<hkern u1="&#x147;" u2="&#x414;" k="-21" />
+<hkern u1="&#x14c;" g2="X.smcp" k="11" />
+<hkern u1="&#x14c;" u2="&#x50e;" k="32" />
+<hkern u1="&#x14c;" u2="&#x42c;" k="32" />
+<hkern u1="&#x14c;" u2="&#x414;" k="33" />
+<hkern u1="&#x14c;" u2="&#x3bb;" k="22" />
+<hkern u1="&#x14c;" u2="&#x3a3;" k="16" />
+<hkern u1="&#x14c;" u2="&#x39e;" k="13" />
+<hkern u1="&#x14c;" u2="&#xc6;" k="33" />
+<hkern u1="&#x14d;" u2="&#x50f;" k="20" />
+<hkern u1="&#x14d;" u2="&#x505;" k="11" />
+<hkern u1="&#x14d;" u2="&#x4a1;" k="21" />
+<hkern u1="&#x14d;" u2="&#x47f;" k="15" />
+<hkern u1="&#x14d;" u2="&#x461;" k="16" />
+<hkern u1="&#x14d;" u2="&#x442;" k="22" />
+<hkern u1="&#x14d;" u2="&#x3c7;" k="22" />
+<hkern u1="&#x14d;" u2="&#x3c4;" k="22" />
+<hkern u1="&#x14e;" g2="X.smcp" k="11" />
+<hkern u1="&#x14e;" u2="&#x50e;" k="32" />
+<hkern u1="&#x14e;" u2="&#x42c;" k="32" />
+<hkern u1="&#x14e;" u2="&#x414;" k="33" />
+<hkern u1="&#x14e;" u2="&#x3bb;" k="22" />
+<hkern u1="&#x14e;" u2="&#x3a3;" k="16" />
+<hkern u1="&#x14e;" u2="&#x39e;" k="13" />
+<hkern u1="&#x14e;" u2="&#xc6;" k="33" />
+<hkern u1="&#x14f;" u2="&#x50f;" k="20" />
+<hkern u1="&#x14f;" u2="&#x505;" k="11" />
+<hkern u1="&#x14f;" u2="&#x4a1;" k="21" />
+<hkern u1="&#x14f;" u2="&#x47f;" k="15" />
+<hkern u1="&#x14f;" u2="&#x461;" k="16" />
+<hkern u1="&#x14f;" u2="&#x442;" k="22" />
+<hkern u1="&#x14f;" u2="&#x3c7;" k="22" />
+<hkern u1="&#x14f;" u2="&#x3c4;" k="22" />
+<hkern u1="&#x150;" g2="X.smcp" k="11" />
+<hkern u1="&#x150;" u2="&#x50e;" k="32" />
+<hkern u1="&#x150;" u2="&#x42c;" k="32" />
+<hkern u1="&#x150;" u2="&#x414;" k="33" />
+<hkern u1="&#x150;" u2="&#x3bb;" k="22" />
+<hkern u1="&#x150;" u2="&#x3a3;" k="16" />
+<hkern u1="&#x150;" u2="&#x39e;" k="13" />
+<hkern u1="&#x150;" u2="&#xc6;" k="33" />
+<hkern u1="&#x151;" u2="&#x50f;" k="20" />
+<hkern u1="&#x151;" u2="&#x505;" k="11" />
+<hkern u1="&#x151;" u2="&#x4a1;" k="21" />
+<hkern u1="&#x151;" u2="&#x47f;" k="15" />
+<hkern u1="&#x151;" u2="&#x461;" k="16" />
+<hkern u1="&#x151;" u2="&#x442;" k="22" />
+<hkern u1="&#x151;" u2="&#x3c7;" k="22" />
+<hkern u1="&#x151;" u2="&#x3c4;" k="22" />
+<hkern u1="&#x155;" u2="w" k="-17" />
+<hkern u1="&#x155;" u2="t" k="-17" />
+<hkern u1="&#x155;" u2="f" k="-15" />
+<hkern u1="&#x157;" u2="w" k="-17" />
+<hkern u1="&#x157;" u2="t" k="-17" />
+<hkern u1="&#x157;" u2="f" k="-15" />
+<hkern u1="&#x159;" u2="w" k="-17" />
+<hkern u1="&#x159;" u2="t" k="-17" />
+<hkern u1="&#x159;" u2="f" k="-15" />
+<hkern u1="&#x162;" g2="Q.smcp" k="71" />
+<hkern u1="&#x162;" g2="S.smcp" k="68" />
+<hkern u1="&#x162;" g2="T.smcp" k="15" />
+<hkern u1="&#x162;" g2="W.smcp" k="15" />
+<hkern u1="&#x162;" g2="X.smcp" k="19" />
+<hkern u1="&#x162;" u2="&#x510;" k="14" />
+<hkern u1="&#x162;" u2="&#x50f;" k="111" />
+<hkern u1="&#x162;" u2="&#x50e;" k="-15" />
+<hkern u1="&#x162;" u2="&#x50b;" k="133" />
+<hkern u1="&#x162;" u2="&#x507;" k="83" />
+<hkern u1="&#x162;" u2="&#x505;" k="110" />
+<hkern u1="&#x162;" u2="&#x500;" k="149" />
+<hkern u1="&#x162;" u2="&#x4d8;" k="26" />
+<hkern u1="&#x162;" u2="&#x4bd;" k="148" />
+<hkern u1="&#x162;" u2="&#x4bc;" k="102" />
+<hkern u1="&#x162;" u2="&#x4bb;" k="132" />
+<hkern u1="&#x162;" u2="&#x4b9;" k="132" />
+<hkern u1="&#x162;" u2="&#x4a7;" k="96" />
+<hkern u1="&#x162;" u2="&#x4a1;" k="77" />
+<hkern u1="&#x162;" u2="&#x49d;" k="131" />
+<hkern u1="&#x162;" u2="&#x491;" k="104" />
+<hkern u1="&#x162;" u2="&#x48f;" k="127" />
+<hkern u1="&#x162;" u2="&#x47f;" k="38" />
+<hkern u1="&#x162;" u2="&#x47b;" k="153" />
+<hkern u1="&#x162;" u2="&#x461;" k="129" />
+<hkern u1="&#x162;" u2="&#x45f;" k="131" />
+<hkern u1="&#x162;" u2="&#x44f;" k="135" />
+<hkern u1="&#x162;" u2="&#x44d;" k="128" />
+<hkern u1="&#x162;" u2="&#x44b;" k="131" />
+<hkern u1="&#x162;" u2="&#x442;" k="78" />
+<hkern u1="&#x162;" u2="&#x437;" k="128" />
+<hkern u1="&#x162;" u2="&#x434;" k="140" />
+<hkern u1="&#x162;" u2="&#x432;" k="96" />
+<hkern u1="&#x162;" u2="&#x431;" k="28" />
+<hkern u1="&#x162;" u2="&#x42c;" k="-15" />
+<hkern u1="&#x162;" u2="&#x414;" k="81" />
+<hkern u1="&#x162;" u2="&#x3c9;" k="132" />
+<hkern u1="&#x162;" u2="&#x3c8;" k="131" />
+<hkern u1="&#x162;" u2="&#x3c7;" k="77" />
+<hkern u1="&#x162;" u2="&#x3c6;" k="130" />
+<hkern u1="&#x162;" u2="&#x3c4;" k="78" />
+<hkern u1="&#x162;" u2="&#x3c1;" k="135" />
+<hkern u1="&#x162;" u2="&#x3c0;" k="101" />
+<hkern u1="&#x162;" u2="&#x3b9;" k="133" />
+<hkern u1="&#x162;" u2="&#x3b5;" k="130" />
+<hkern u1="&#x162;" u2="&#x3b4;" k="15" />
+<hkern u1="&#x162;" u2="&#x3a6;" k="72" />
+<hkern u1="&#x162;" u2="&#xf8;" k="95" />
+<hkern u1="&#x162;" u2="&#xe6;" k="84" />
+<hkern u1="&#x162;" u2="&#xc6;" k="188" />
+<hkern u1="&#x162;" u2="&#xbb;" k="147" />
+<hkern u1="&#x162;" u2="&#xab;" k="151" />
+<hkern u1="&#x162;" u2="w" k="47" />
+<hkern u1="&#x162;" u2="r" k="65" />
+<hkern u1="&#x164;" g2="Q.smcp" k="71" />
+<hkern u1="&#x164;" g2="S.smcp" k="68" />
+<hkern u1="&#x164;" g2="T.smcp" k="15" />
+<hkern u1="&#x164;" g2="W.smcp" k="15" />
+<hkern u1="&#x164;" g2="X.smcp" k="19" />
+<hkern u1="&#x164;" u2="&#x510;" k="14" />
+<hkern u1="&#x164;" u2="&#x50f;" k="111" />
+<hkern u1="&#x164;" u2="&#x50e;" k="-15" />
+<hkern u1="&#x164;" u2="&#x50b;" k="133" />
+<hkern u1="&#x164;" u2="&#x507;" k="83" />
+<hkern u1="&#x164;" u2="&#x505;" k="110" />
+<hkern u1="&#x164;" u2="&#x500;" k="149" />
+<hkern u1="&#x164;" u2="&#x4d8;" k="26" />
+<hkern u1="&#x164;" u2="&#x4bd;" k="148" />
+<hkern u1="&#x164;" u2="&#x4bc;" k="102" />
+<hkern u1="&#x164;" u2="&#x4bb;" k="132" />
+<hkern u1="&#x164;" u2="&#x4b9;" k="132" />
+<hkern u1="&#x164;" u2="&#x4a7;" k="96" />
+<hkern u1="&#x164;" u2="&#x4a1;" k="77" />
+<hkern u1="&#x164;" u2="&#x49d;" k="131" />
+<hkern u1="&#x164;" u2="&#x491;" k="104" />
+<hkern u1="&#x164;" u2="&#x48f;" k="127" />
+<hkern u1="&#x164;" u2="&#x47f;" k="38" />
+<hkern u1="&#x164;" u2="&#x47b;" k="153" />
+<hkern u1="&#x164;" u2="&#x461;" k="129" />
+<hkern u1="&#x164;" u2="&#x45f;" k="131" />
+<hkern u1="&#x164;" u2="&#x44f;" k="135" />
+<hkern u1="&#x164;" u2="&#x44d;" k="128" />
+<hkern u1="&#x164;" u2="&#x44b;" k="131" />
+<hkern u1="&#x164;" u2="&#x442;" k="78" />
+<hkern u1="&#x164;" u2="&#x437;" k="128" />
+<hkern u1="&#x164;" u2="&#x434;" k="140" />
+<hkern u1="&#x164;" u2="&#x432;" k="96" />
+<hkern u1="&#x164;" u2="&#x431;" k="28" />
+<hkern u1="&#x164;" u2="&#x42c;" k="-15" />
+<hkern u1="&#x164;" u2="&#x414;" k="81" />
+<hkern u1="&#x164;" u2="&#x3c9;" k="132" />
+<hkern u1="&#x164;" u2="&#x3c8;" k="131" />
+<hkern u1="&#x164;" u2="&#x3c7;" k="77" />
+<hkern u1="&#x164;" u2="&#x3c6;" k="130" />
+<hkern u1="&#x164;" u2="&#x3c4;" k="78" />
+<hkern u1="&#x164;" u2="&#x3c1;" k="135" />
+<hkern u1="&#x164;" u2="&#x3c0;" k="101" />
+<hkern u1="&#x164;" u2="&#x3b9;" k="133" />
+<hkern u1="&#x164;" u2="&#x3b5;" k="130" />
+<hkern u1="&#x164;" u2="&#x3b4;" k="15" />
+<hkern u1="&#x164;" u2="&#x3a6;" k="72" />
+<hkern u1="&#x164;" u2="&#xf8;" k="95" />
+<hkern u1="&#x164;" u2="&#xe6;" k="84" />
+<hkern u1="&#x164;" u2="&#xc6;" k="188" />
+<hkern u1="&#x164;" u2="&#xbb;" k="147" />
+<hkern u1="&#x164;" u2="&#xab;" k="151" />
+<hkern u1="&#x164;" u2="w" k="47" />
+<hkern u1="&#x164;" u2="r" k="65" />
+<hkern u1="&#x166;" g2="Q.smcp" k="71" />
+<hkern u1="&#x166;" g2="S.smcp" k="68" />
+<hkern u1="&#x166;" g2="T.smcp" k="15" />
+<hkern u1="&#x166;" g2="W.smcp" k="15" />
+<hkern u1="&#x166;" g2="X.smcp" k="19" />
+<hkern u1="&#x166;" u2="&#x510;" k="14" />
+<hkern u1="&#x166;" u2="&#x50f;" k="111" />
+<hkern u1="&#x166;" u2="&#x50e;" k="-15" />
+<hkern u1="&#x166;" u2="&#x50b;" k="133" />
+<hkern u1="&#x166;" u2="&#x507;" k="83" />
+<hkern u1="&#x166;" u2="&#x505;" k="110" />
+<hkern u1="&#x166;" u2="&#x500;" k="149" />
+<hkern u1="&#x166;" u2="&#x4d8;" k="26" />
+<hkern u1="&#x166;" u2="&#x4bd;" k="148" />
+<hkern u1="&#x166;" u2="&#x4bc;" k="102" />
+<hkern u1="&#x166;" u2="&#x4bb;" k="132" />
+<hkern u1="&#x166;" u2="&#x4b9;" k="132" />
+<hkern u1="&#x166;" u2="&#x4a7;" k="96" />
+<hkern u1="&#x166;" u2="&#x4a1;" k="77" />
+<hkern u1="&#x166;" u2="&#x49d;" k="131" />
+<hkern u1="&#x166;" u2="&#x491;" k="104" />
+<hkern u1="&#x166;" u2="&#x48f;" k="127" />
+<hkern u1="&#x166;" u2="&#x47f;" k="38" />
+<hkern u1="&#x166;" u2="&#x47b;" k="153" />
+<hkern u1="&#x166;" u2="&#x461;" k="129" />
+<hkern u1="&#x166;" u2="&#x45f;" k="131" />
+<hkern u1="&#x166;" u2="&#x44f;" k="135" />
+<hkern u1="&#x166;" u2="&#x44d;" k="128" />
+<hkern u1="&#x166;" u2="&#x44b;" k="131" />
+<hkern u1="&#x166;" u2="&#x442;" k="78" />
+<hkern u1="&#x166;" u2="&#x437;" k="128" />
+<hkern u1="&#x166;" u2="&#x434;" k="140" />
+<hkern u1="&#x166;" u2="&#x432;" k="96" />
+<hkern u1="&#x166;" u2="&#x431;" k="28" />
+<hkern u1="&#x166;" u2="&#x42c;" k="-15" />
+<hkern u1="&#x166;" u2="&#x414;" k="81" />
+<hkern u1="&#x166;" u2="&#x3c9;" k="132" />
+<hkern u1="&#x166;" u2="&#x3c8;" k="131" />
+<hkern u1="&#x166;" u2="&#x3c7;" k="77" />
+<hkern u1="&#x166;" u2="&#x3c6;" k="130" />
+<hkern u1="&#x166;" u2="&#x3c4;" k="78" />
+<hkern u1="&#x166;" u2="&#x3c1;" k="135" />
+<hkern u1="&#x166;" u2="&#x3c0;" k="101" />
+<hkern u1="&#x166;" u2="&#x3b9;" k="133" />
+<hkern u1="&#x166;" u2="&#x3b5;" k="130" />
+<hkern u1="&#x166;" u2="&#x3b4;" k="15" />
+<hkern u1="&#x166;" u2="&#x3a6;" k="72" />
+<hkern u1="&#x166;" u2="&#xf8;" k="95" />
+<hkern u1="&#x166;" u2="&#xe6;" k="84" />
+<hkern u1="&#x166;" u2="&#xc6;" k="188" />
+<hkern u1="&#x166;" u2="&#xbb;" k="147" />
+<hkern u1="&#x166;" u2="&#xab;" k="151" />
+<hkern u1="&#x166;" u2="w" k="47" />
+<hkern u1="&#x166;" u2="r" k="65" />
+<hkern u1="&#x174;" g2="Q.smcp" k="25" />
+<hkern u1="&#x174;" u2="&#x7d;" k="-14" />
+<hkern u1="&#x174;" u2="r" k="21" />
+<hkern u1="&#x174;" u2="]" k="-12" />
+<hkern u1="&#x174;" u2="&#x29;" k="-15" />
+<hkern u1="&#x176;" g2="Q.smcp" k="53" />
+<hkern u1="&#x176;" g2="T.smcp" k="13" />
+<hkern u1="&#x176;" g2="W.smcp" k="13" />
+<hkern u1="&#x176;" g2="X.smcp" k="17" />
+<hkern u1="&#x176;" u2="&#x2022;" k="45" />
+<hkern u1="&#x176;" u2="&#x3c9;" k="57" />
+<hkern u1="&#x176;" u2="&#x3c8;" k="38" />
+<hkern u1="&#x176;" u2="&#x3c7;" k="63" />
+<hkern u1="&#x176;" u2="&#x3c6;" k="53" />
+<hkern u1="&#x176;" u2="&#x3c4;" k="23" />
+<hkern u1="&#x176;" u2="&#x3c1;" k="70" />
+<hkern u1="&#x176;" u2="&#x3c0;" k="24" />
+<hkern u1="&#x176;" u2="&#x3b9;" k="42" />
+<hkern u1="&#x176;" u2="&#x3b8;" k="23" />
+<hkern u1="&#x176;" u2="&#x3b6;" k="-13" />
+<hkern u1="&#x176;" u2="&#x3b5;" k="58" />
+<hkern u1="&#x176;" u2="&#x3b4;" k="18" />
+<hkern u1="&#x176;" u2="&#x3b2;" k="22" />
+<hkern u1="&#x176;" u2="&#x3a6;" k="48" />
+<hkern u1="&#x176;" u2="&#xf8;" k="64" />
+<hkern u1="&#x176;" u2="&#xe6;" k="63" />
+<hkern u1="&#x176;" u2="&#xc6;" k="96" />
+<hkern u1="&#x176;" u2="&#xbb;" k="51" />
+<hkern u1="&#x176;" u2="&#xab;" k="82" />
+<hkern u1="&#x176;" u2="&#x7d;" k="-19" />
+<hkern u1="&#x176;" u2="t" k="22" />
+<hkern u1="&#x176;" u2="r" k="40" />
+<hkern u1="&#x176;" u2="f" k="22" />
+<hkern u1="&#x176;" u2="]" k="-18" />
+<hkern u1="&#x176;" u2="&#x2a;" k="49" />
+<hkern u1="&#x176;" u2="&#x29;" k="-20" />
+<hkern u1="&#x176;" u2="&#x26;" k="30" />
+<hkern u1="&#x177;" u2="&#x47b;" k="15" />
+<hkern u1="&#x177;" u2="&#x434;" k="56" />
+<hkern u1="&#x177;" u2="&#x3c4;" k="-12" />
+<hkern u1="&#x177;" u2="&#x3c1;" k="22" />
+<hkern u1="&#x177;" u2="&#x3c0;" k="-11" />
+<hkern u1="&#x177;" u2="&#x3b4;" k="11" />
+<hkern u1="&#x177;" u2="f" k="-13" />
+<hkern u1="&#x178;" g2="Q.smcp" k="53" />
+<hkern u1="&#x178;" g2="T.smcp" k="13" />
+<hkern u1="&#x178;" g2="W.smcp" k="13" />
+<hkern u1="&#x178;" g2="X.smcp" k="17" />
+<hkern u1="&#x178;" u2="&#x2022;" k="45" />
+<hkern u1="&#x178;" u2="&#x3c9;" k="57" />
+<hkern u1="&#x178;" u2="&#x3c8;" k="38" />
+<hkern u1="&#x178;" u2="&#x3c7;" k="63" />
+<hkern u1="&#x178;" u2="&#x3c6;" k="53" />
+<hkern u1="&#x178;" u2="&#x3c4;" k="23" />
+<hkern u1="&#x178;" u2="&#x3c1;" k="70" />
+<hkern u1="&#x178;" u2="&#x3c0;" k="24" />
+<hkern u1="&#x178;" u2="&#x3b9;" k="42" />
+<hkern u1="&#x178;" u2="&#x3b8;" k="23" />
+<hkern u1="&#x178;" u2="&#x3b6;" k="-13" />
+<hkern u1="&#x178;" u2="&#x3b5;" k="58" />
+<hkern u1="&#x178;" u2="&#x3b4;" k="18" />
+<hkern u1="&#x178;" u2="&#x3b2;" k="22" />
+<hkern u1="&#x178;" u2="&#x3a6;" k="48" />
+<hkern u1="&#x178;" u2="&#xf8;" k="64" />
+<hkern u1="&#x178;" u2="&#xe6;" k="63" />
+<hkern u1="&#x178;" u2="&#xc6;" k="96" />
+<hkern u1="&#x178;" u2="&#xbb;" k="51" />
+<hkern u1="&#x178;" u2="&#xab;" k="82" />
+<hkern u1="&#x178;" u2="&#x7d;" k="-19" />
+<hkern u1="&#x178;" u2="t" k="22" />
+<hkern u1="&#x178;" u2="r" k="40" />
+<hkern u1="&#x178;" u2="f" k="22" />
+<hkern u1="&#x178;" u2="]" k="-18" />
+<hkern u1="&#x178;" u2="&#x2a;" k="49" />
+<hkern u1="&#x178;" u2="&#x29;" k="-20" />
+<hkern u1="&#x178;" u2="&#x26;" k="30" />
+<hkern u1="&#x179;" g2="Q.smcp" k="20" />
+<hkern u1="&#x179;" u2="&#x3c8;" k="28" />
+<hkern u1="&#x179;" u2="&#x3a6;" k="53" />
+<hkern u1="&#x179;" u2="w" k="27" />
+<hkern u1="&#x17b;" g2="Q.smcp" k="20" />
+<hkern u1="&#x17b;" u2="&#x3c8;" k="28" />
+<hkern u1="&#x17b;" u2="&#x3a6;" k="53" />
+<hkern u1="&#x17b;" u2="w" k="27" />
+<hkern u1="&#x17d;" g2="Q.smcp" k="20" />
+<hkern u1="&#x17d;" u2="&#x3c8;" k="28" />
+<hkern u1="&#x17d;" u2="&#x3a6;" k="53" />
+<hkern u1="&#x17d;" u2="w" k="27" />
+<hkern u1="&#x1fa;" g2="T.smcp" k="57" />
+<hkern u1="&#x1fa;" g2="U.smcp" k="15" />
+<hkern u1="&#x1fa;" g2="V.smcp" k="51" />
+<hkern u1="&#x1fa;" g2="W.smcp" k="35" />
+<hkern u1="&#x1fa;" g2="Y.smcp" k="60" />
+<hkern u1="&#x1fa;" u2="&#x50f;" k="57" />
+<hkern u1="&#x1fa;" u2="&#x50e;" k="88" />
+<hkern u1="&#x1fa;" u2="&#x506;" k="54" />
+<hkern u1="&#x1fa;" u2="&#x504;" k="80" />
+<hkern u1="&#x1fa;" u2="&#x4d8;" k="14" />
+<hkern u1="&#x1fa;" u2="&#x4bd;" k="35" />
+<hkern u1="&#x1fa;" u2="&#x4bc;" k="152" />
+<hkern u1="&#x1fa;" u2="&#x4b9;" k="123" />
+<hkern u1="&#x1fa;" u2="&#x4b8;" k="155" />
+<hkern u1="&#x1fa;" u2="&#x4a1;" k="126" />
+<hkern u1="&#x1fa;" u2="&#x442;" k="54" />
+<hkern u1="&#x1fa;" u2="&#x42c;" k="59" />
+<hkern u1="&#x1fa;" u2="&#x414;" k="-19" />
+<hkern u1="&#x1fa;" u2="&#x3c4;" k="56" />
+<hkern u1="&#x1fa;" u2="&#x3bb;" k="-17" />
+<hkern u1="&#x1fa;" u2="&#x3a8;" k="47" />
+<hkern u1="&#x1fa;" u2="&#x3a6;" k="27" />
+<hkern u1="&#x1fa;" u2="&#x1af;" k="18" />
+<hkern u1="&#x1fa;" u2="w" k="33" />
+<hkern u1="&#x1fa;" u2="t" k="17" />
+<hkern u1="&#x1fa;" u2="&#x3f;" k="80" />
+<hkern u1="&#x1fb;" u2="&#x50f;" k="15" />
+<hkern u1="&#x1fb;" u2="&#x507;" k="13" />
+<hkern u1="&#x1fb;" u2="&#x505;" k="13" />
+<hkern u1="&#x1fb;" u2="&#x4a1;" k="15" />
+<hkern u1="&#x1fb;" u2="&#x47f;" k="13" />
+<hkern u1="&#x1fb;" u2="&#x461;" k="15" />
+<hkern u1="&#x1fb;" u2="&#x442;" k="16" />
+<hkern u1="&#x2bc;" u2="w" k="-11" />
+<hkern u1="&#x386;" g2="T.smcp" k="57" />
+<hkern u1="&#x386;" g2="U.smcp" k="15" />
+<hkern u1="&#x386;" g2="V.smcp" k="51" />
+<hkern u1="&#x386;" g2="W.smcp" k="35" />
+<hkern u1="&#x386;" g2="Y.smcp" k="60" />
+<hkern u1="&#x386;" u2="&#x50f;" k="57" />
+<hkern u1="&#x386;" u2="&#x50e;" k="88" />
+<hkern u1="&#x386;" u2="&#x506;" k="54" />
+<hkern u1="&#x386;" u2="&#x504;" k="80" />
+<hkern u1="&#x386;" u2="&#x4d8;" k="14" />
+<hkern u1="&#x386;" u2="&#x4bd;" k="35" />
+<hkern u1="&#x386;" u2="&#x4bc;" k="152" />
+<hkern u1="&#x386;" u2="&#x4b9;" k="123" />
+<hkern u1="&#x386;" u2="&#x4b8;" k="155" />
+<hkern u1="&#x386;" u2="&#x4a1;" k="126" />
+<hkern u1="&#x386;" u2="&#x442;" k="54" />
+<hkern u1="&#x386;" u2="&#x42c;" k="59" />
+<hkern u1="&#x386;" u2="&#x414;" k="-19" />
+<hkern u1="&#x386;" u2="&#x3c4;" k="56" />
+<hkern u1="&#x386;" u2="&#x3bb;" k="-17" />
+<hkern u1="&#x386;" u2="&#x3a8;" k="47" />
+<hkern u1="&#x386;" u2="&#x3a6;" k="27" />
+<hkern u1="&#x386;" u2="&#x1af;" k="18" />
+<hkern u1="&#x386;" u2="w" k="33" />
+<hkern u1="&#x386;" u2="t" k="17" />
+<hkern u1="&#x386;" u2="&#x3f;" k="80" />
+<hkern u1="&#x388;" g2="V.smcp" k="16" />
+<hkern u1="&#x388;" g2="W.smcp" k="19" />
+<hkern u1="&#x388;" g2="Y.smcp" k="16" />
+<hkern u1="&#x388;" u2="w" k="22" />
+<hkern u1="&#x388;" u2="f" k="18" />
+<hkern u1="&#x389;" u2="&#x50e;" k="28" />
+<hkern u1="&#x389;" u2="&#x506;" k="30" />
+<hkern u1="&#x389;" u2="&#x504;" k="29" />
+<hkern u1="&#x389;" u2="&#x4bc;" k="28" />
+<hkern u1="&#x389;" u2="&#x4b9;" k="27" />
+<hkern u1="&#x389;" u2="&#x4b8;" k="28" />
+<hkern u1="&#x389;" u2="&#x434;" k="-21" />
+<hkern u1="&#x389;" u2="&#x414;" k="-21" />
+<hkern u1="&#x38a;" u2="&#x50e;" k="28" />
+<hkern u1="&#x38a;" u2="&#x506;" k="30" />
+<hkern u1="&#x38a;" u2="&#x504;" k="29" />
+<hkern u1="&#x38a;" u2="&#x4bc;" k="28" />
+<hkern u1="&#x38a;" u2="&#x4b9;" k="27" />
+<hkern u1="&#x38a;" u2="&#x4b8;" k="28" />
+<hkern u1="&#x38a;" u2="&#x434;" k="-21" />
+<hkern u1="&#x38a;" u2="&#x414;" k="-21" />
+<hkern u1="&#x38c;" g2="X.smcp" k="11" />
+<hkern u1="&#x38c;" u2="&#x50e;" k="32" />
+<hkern u1="&#x38c;" u2="&#x42c;" k="32" />
+<hkern u1="&#x38c;" u2="&#x414;" k="33" />
+<hkern u1="&#x38c;" u2="&#x3bb;" k="22" />
+<hkern u1="&#x38c;" u2="&#x3a3;" k="16" />
+<hkern u1="&#x38c;" u2="&#x39e;" k="13" />
+<hkern u1="&#x38c;" u2="&#xc6;" k="33" />
+<hkern u1="&#x38e;" g2="Q.smcp" k="53" />
+<hkern u1="&#x38e;" g2="T.smcp" k="13" />
+<hkern u1="&#x38e;" g2="W.smcp" k="13" />
+<hkern u1="&#x38e;" g2="X.smcp" k="17" />
+<hkern u1="&#x38e;" u2="&#x2022;" k="45" />
+<hkern u1="&#x38e;" u2="&#x3c9;" k="57" />
+<hkern u1="&#x38e;" u2="&#x3c8;" k="38" />
+<hkern u1="&#x38e;" u2="&#x3c7;" k="63" />
+<hkern u1="&#x38e;" u2="&#x3c6;" k="53" />
+<hkern u1="&#x38e;" u2="&#x3c4;" k="23" />
+<hkern u1="&#x38e;" u2="&#x3c1;" k="70" />
+<hkern u1="&#x38e;" u2="&#x3c0;" k="24" />
+<hkern u1="&#x38e;" u2="&#x3b9;" k="42" />
+<hkern u1="&#x38e;" u2="&#x3b8;" k="23" />
+<hkern u1="&#x38e;" u2="&#x3b6;" k="-13" />
+<hkern u1="&#x38e;" u2="&#x3b5;" k="58" />
+<hkern u1="&#x38e;" u2="&#x3b4;" k="18" />
+<hkern u1="&#x38e;" u2="&#x3b2;" k="22" />
+<hkern u1="&#x38e;" u2="&#x3a6;" k="48" />
+<hkern u1="&#x38e;" u2="&#xf8;" k="64" />
+<hkern u1="&#x38e;" u2="&#xe6;" k="63" />
+<hkern u1="&#x38e;" u2="&#xc6;" k="96" />
+<hkern u1="&#x38e;" u2="&#xbb;" k="51" />
+<hkern u1="&#x38e;" u2="&#xab;" k="82" />
+<hkern u1="&#x38e;" u2="&#x7d;" k="-19" />
+<hkern u1="&#x38e;" u2="t" k="22" />
+<hkern u1="&#x38e;" u2="r" k="40" />
+<hkern u1="&#x38e;" u2="f" k="22" />
+<hkern u1="&#x38e;" u2="]" k="-18" />
+<hkern u1="&#x38e;" u2="&#x2a;" k="49" />
+<hkern u1="&#x38e;" u2="&#x29;" k="-20" />
+<hkern u1="&#x38e;" u2="&#x26;" k="30" />
+<hkern u1="&#x391;" g2="T.smcp" k="57" />
+<hkern u1="&#x391;" g2="U.smcp" k="15" />
+<hkern u1="&#x391;" g2="V.smcp" k="51" />
+<hkern u1="&#x391;" g2="W.smcp" k="35" />
+<hkern u1="&#x391;" g2="Y.smcp" k="60" />
+<hkern u1="&#x391;" u2="&#x50f;" k="57" />
+<hkern u1="&#x391;" u2="&#x50e;" k="88" />
+<hkern u1="&#x391;" u2="&#x506;" k="54" />
+<hkern u1="&#x391;" u2="&#x504;" k="80" />
+<hkern u1="&#x391;" u2="&#x4d8;" k="14" />
+<hkern u1="&#x391;" u2="&#x4bd;" k="35" />
+<hkern u1="&#x391;" u2="&#x4bc;" k="152" />
+<hkern u1="&#x391;" u2="&#x4b9;" k="123" />
+<hkern u1="&#x391;" u2="&#x4b8;" k="155" />
+<hkern u1="&#x391;" u2="&#x4a1;" k="126" />
+<hkern u1="&#x391;" u2="&#x442;" k="54" />
+<hkern u1="&#x391;" u2="&#x42c;" k="59" />
+<hkern u1="&#x391;" u2="&#x414;" k="-19" />
+<hkern u1="&#x391;" u2="&#x3c4;" k="56" />
+<hkern u1="&#x391;" u2="&#x3bb;" k="-17" />
+<hkern u1="&#x391;" u2="&#x3a8;" k="47" />
+<hkern u1="&#x391;" u2="&#x3a6;" k="27" />
+<hkern u1="&#x391;" u2="&#x1af;" k="18" />
+<hkern u1="&#x391;" u2="w" k="33" />
+<hkern u1="&#x391;" u2="t" k="17" />
+<hkern u1="&#x391;" u2="&#x3f;" k="80" />
+<hkern u1="&#x392;" u2="&#x50e;" k="26" />
+<hkern u1="&#x392;" u2="&#x46a;" k="-11" />
+<hkern u1="&#x393;" u2="&#x510;" k="43" />
+<hkern u1="&#x393;" u2="&#x50f;" k="208" />
+<hkern u1="&#x393;" u2="&#x50e;" k="-5" />
+<hkern u1="&#x393;" u2="&#x50b;" k="246" />
+<hkern u1="&#x393;" u2="&#x507;" k="161" />
+<hkern u1="&#x393;" u2="&#x505;" k="207" />
+<hkern u1="&#x393;" u2="&#x500;" k="273" />
+<hkern u1="&#x393;" u2="&#x4d8;" k="64" />
+<hkern u1="&#x393;" u2="&#x4bd;" k="271" />
+<hkern u1="&#x393;" u2="&#x4bc;" k="193" />
+<hkern u1="&#x393;" u2="&#x4bb;" k="244" />
+<hkern u1="&#x393;" u2="&#x4b9;" k="244" />
+<hkern u1="&#x393;" u2="&#x4a7;" k="183" />
+<hkern u1="&#x393;" u2="&#x4a1;" k="150" />
+<hkern u1="&#x393;" u2="&#x49d;" k="242" />
+<hkern u1="&#x393;" u2="&#x491;" k="196" />
+<hkern u1="&#x393;" u2="&#x48f;" k="235" />
+<hkern u1="&#x393;" u2="&#x47f;" k="84" />
+<hkern u1="&#x393;" u2="&#x47b;" k="279" />
+<hkern u1="&#x393;" u2="&#x461;" k="239" />
+<hkern u1="&#x393;" u2="&#x45f;" k="242" />
+<hkern u1="&#x393;" u2="&#x44f;" k="249" />
+<hkern u1="&#x393;" u2="&#x44d;" k="237" />
+<hkern u1="&#x393;" u2="&#x44b;" k="242" />
+<hkern u1="&#x393;" u2="&#x442;" k="152" />
+<hkern u1="&#x393;" u2="&#x437;" k="237" />
+<hkern u1="&#x393;" u2="&#x434;" k="258" />
+<hkern u1="&#x393;" u2="&#x432;" k="183" />
+<hkern u1="&#x393;" u2="&#x431;" k="67" />
+<hkern u1="&#x393;" u2="&#x42c;" k="-5" />
+<hkern u1="&#x393;" u2="&#x414;" k="157" />
+<hkern u1="&#x393;" u2="&#x3c9;" k="245" />
+<hkern u1="&#x393;" u2="&#x3c8;" k="242" />
+<hkern u1="&#x393;" u2="&#x3c7;" k="150" />
+<hkern u1="&#x393;" u2="&#x3c6;" k="241" />
+<hkern u1="&#x393;" u2="&#x3c4;" k="152" />
+<hkern u1="&#x393;" u2="&#x3c1;" k="249" />
+<hkern u1="&#x393;" u2="&#x3c0;" k="191" />
+<hkern u1="&#x393;" u2="&#x3b9;" k="246" />
+<hkern u1="&#x393;" u2="&#x3b5;" k="241" />
+<hkern u1="&#x393;" u2="&#x3b4;" k="46" />
+<hkern u1="&#x393;" u2="&#x3a6;" k="142" />
+<hkern u1="&#x393;" u2="&#xf8;" k="181" />
+<hkern u1="&#x393;" u2="&#xe6;" k="163" />
+<hkern u1="&#x393;" u2="&#xc6;" k="340" />
+<hkern u1="&#x393;" u2="&#xbb;" k="270" />
+<hkern u1="&#x393;" u2="&#xab;" k="277" />
+<hkern u1="&#x393;" u2="w" k="99" />
+<hkern u1="&#x393;" u2="r" k="130" />
+<hkern u1="&#x394;" g2="T.smcp" k="57" />
+<hkern u1="&#x394;" g2="U.smcp" k="15" />
+<hkern u1="&#x394;" g2="V.smcp" k="51" />
+<hkern u1="&#x394;" g2="W.smcp" k="35" />
+<hkern u1="&#x394;" g2="Y.smcp" k="60" />
+<hkern u1="&#x394;" u2="&#x50f;" k="57" />
+<hkern u1="&#x394;" u2="&#x50e;" k="88" />
+<hkern u1="&#x394;" u2="&#x506;" k="54" />
+<hkern u1="&#x394;" u2="&#x504;" k="80" />
+<hkern u1="&#x394;" u2="&#x4d8;" k="14" />
+<hkern u1="&#x394;" u2="&#x4bd;" k="35" />
+<hkern u1="&#x394;" u2="&#x4bc;" k="152" />
+<hkern u1="&#x394;" u2="&#x4b9;" k="123" />
+<hkern u1="&#x394;" u2="&#x4b8;" k="155" />
+<hkern u1="&#x394;" u2="&#x4a1;" k="126" />
+<hkern u1="&#x394;" u2="&#x442;" k="54" />
+<hkern u1="&#x394;" u2="&#x42c;" k="59" />
+<hkern u1="&#x394;" u2="&#x414;" k="-19" />
+<hkern u1="&#x394;" u2="&#x3c4;" k="56" />
+<hkern u1="&#x394;" u2="&#x3bb;" k="-17" />
+<hkern u1="&#x394;" u2="&#x3a8;" k="47" />
+<hkern u1="&#x394;" u2="&#x3a6;" k="27" />
+<hkern u1="&#x394;" u2="&#x1af;" k="18" />
+<hkern u1="&#x394;" u2="w" k="33" />
+<hkern u1="&#x394;" u2="t" k="17" />
+<hkern u1="&#x394;" u2="&#x3f;" k="80" />
+<hkern u1="&#x395;" g2="V.smcp" k="16" />
+<hkern u1="&#x395;" g2="W.smcp" k="19" />
+<hkern u1="&#x395;" g2="Y.smcp" k="16" />
+<hkern u1="&#x395;" u2="w" k="22" />
+<hkern u1="&#x395;" u2="f" k="18" />
+<hkern u1="&#x396;" g2="Q.smcp" k="20" />
+<hkern u1="&#x396;" u2="&#x3c8;" k="28" />
+<hkern u1="&#x396;" u2="&#x3a6;" k="53" />
+<hkern u1="&#x396;" u2="w" k="27" />
+<hkern u1="&#x397;" u2="&#x50e;" k="28" />
+<hkern u1="&#x397;" u2="&#x506;" k="30" />
+<hkern u1="&#x397;" u2="&#x504;" k="29" />
+<hkern u1="&#x397;" u2="&#x4bc;" k="28" />
+<hkern u1="&#x397;" u2="&#x4b9;" k="27" />
+<hkern u1="&#x397;" u2="&#x4b8;" k="28" />
+<hkern u1="&#x397;" u2="&#x434;" k="-21" />
+<hkern u1="&#x397;" u2="&#x414;" k="-21" />
+<hkern u1="&#x398;" g2="X.smcp" k="11" />
+<hkern u1="&#x398;" u2="&#x50e;" k="32" />
+<hkern u1="&#x398;" u2="&#x42c;" k="32" />
+<hkern u1="&#x398;" u2="&#x414;" k="33" />
+<hkern u1="&#x398;" u2="&#x3bb;" k="22" />
+<hkern u1="&#x398;" u2="&#x3a3;" k="16" />
+<hkern u1="&#x398;" u2="&#x39e;" k="13" />
+<hkern u1="&#x398;" u2="&#xc6;" k="33" />
+<hkern u1="&#x399;" u2="&#x50e;" k="28" />
+<hkern u1="&#x399;" u2="&#x506;" k="30" />
+<hkern u1="&#x399;" u2="&#x504;" k="29" />
+<hkern u1="&#x399;" u2="&#x4bc;" k="28" />
+<hkern u1="&#x399;" u2="&#x4b9;" k="27" />
+<hkern u1="&#x399;" u2="&#x4b8;" k="28" />
+<hkern u1="&#x399;" u2="&#x434;" k="-21" />
+<hkern u1="&#x399;" u2="&#x414;" k="-21" />
+<hkern u1="&#x39a;" g2="Q.smcp" k="25" />
+<hkern u1="&#x39a;" u2="&#x510;" k="17" />
+<hkern u1="&#x39a;" u2="&#x50f;" k="53" />
+<hkern u1="&#x39a;" u2="&#x507;" k="52" />
+<hkern u1="&#x39a;" u2="&#x505;" k="52" />
+<hkern u1="&#x39a;" u2="&#x4d8;" k="28" />
+<hkern u1="&#x39a;" u2="&#x4b9;" k="59" />
+<hkern u1="&#x39a;" u2="&#x4a1;" k="96" />
+<hkern u1="&#x39a;" u2="&#x47f;" k="56" />
+<hkern u1="&#x39a;" u2="&#x47b;" k="46" />
+<hkern u1="&#x39a;" u2="&#x461;" k="78" />
+<hkern u1="&#x39a;" u2="&#x442;" k="71" />
+<hkern u1="&#x39a;" u2="&#x431;" k="41" />
+<hkern u1="&#x39a;" u2="&#x3c4;" k="76" />
+<hkern u1="&#x39a;" u2="&#x3a6;" k="59" />
+<hkern u1="&#x39a;" u2="w" k="63" />
+<hkern u1="&#x39b;" g2="T.smcp" k="57" />
+<hkern u1="&#x39b;" g2="U.smcp" k="15" />
+<hkern u1="&#x39b;" g2="V.smcp" k="51" />
+<hkern u1="&#x39b;" g2="W.smcp" k="35" />
+<hkern u1="&#x39b;" g2="Y.smcp" k="60" />
+<hkern u1="&#x39b;" u2="&#x50f;" k="57" />
+<hkern u1="&#x39b;" u2="&#x50e;" k="88" />
+<hkern u1="&#x39b;" u2="&#x506;" k="54" />
+<hkern u1="&#x39b;" u2="&#x504;" k="80" />
+<hkern u1="&#x39b;" u2="&#x4d8;" k="14" />
+<hkern u1="&#x39b;" u2="&#x4bd;" k="35" />
+<hkern u1="&#x39b;" u2="&#x4bc;" k="152" />
+<hkern u1="&#x39b;" u2="&#x4b9;" k="123" />
+<hkern u1="&#x39b;" u2="&#x4b8;" k="155" />
+<hkern u1="&#x39b;" u2="&#x4a1;" k="126" />
+<hkern u1="&#x39b;" u2="&#x442;" k="54" />
+<hkern u1="&#x39b;" u2="&#x42c;" k="59" />
+<hkern u1="&#x39b;" u2="&#x414;" k="-19" />
+<hkern u1="&#x39b;" u2="&#x3c4;" k="56" />
+<hkern u1="&#x39b;" u2="&#x3bb;" k="-17" />
+<hkern u1="&#x39b;" u2="&#x3a8;" k="47" />
+<hkern u1="&#x39b;" u2="&#x3a6;" k="27" />
+<hkern u1="&#x39b;" u2="&#x1af;" k="18" />
+<hkern u1="&#x39b;" u2="w" k="33" />
+<hkern u1="&#x39b;" u2="t" k="17" />
+<hkern u1="&#x39b;" u2="&#x3f;" k="80" />
+<hkern u1="&#x39c;" u2="&#x50e;" k="28" />
+<hkern u1="&#x39c;" u2="&#x506;" k="30" />
+<hkern u1="&#x39c;" u2="&#x504;" k="29" />
+<hkern u1="&#x39c;" u2="&#x4bc;" k="28" />
+<hkern u1="&#x39c;" u2="&#x4b9;" k="27" />
+<hkern u1="&#x39c;" u2="&#x4b8;" k="28" />
+<hkern u1="&#x39c;" u2="&#x434;" k="-21" />
+<hkern u1="&#x39c;" u2="&#x414;" k="-21" />
+<hkern u1="&#x39d;" u2="&#x50e;" k="28" />
+<hkern u1="&#x39d;" u2="&#x506;" k="30" />
+<hkern u1="&#x39d;" u2="&#x504;" k="29" />
+<hkern u1="&#x39d;" u2="&#x4bc;" k="28" />
+<hkern u1="&#x39d;" u2="&#x4b9;" k="27" />
+<hkern u1="&#x39d;" u2="&#x4b8;" k="28" />
+<hkern u1="&#x39d;" u2="&#x434;" k="-21" />
+<hkern u1="&#x39d;" u2="&#x414;" k="-21" />
+<hkern u1="&#x39e;" u2="&#x1f4d;" k="13" />
+<hkern u1="&#x39e;" u2="&#x1ee2;" k="13" />
+<hkern u1="&#x39e;" u2="&#x1ee0;" k="13" />
+<hkern u1="&#x39e;" u2="&#x1ede;" k="13" />
+<hkern u1="&#x39e;" u2="&#x1edc;" k="13" />
+<hkern u1="&#x39e;" u2="&#x1eda;" k="13" />
+<hkern u1="&#x39e;" u2="&#x1ed8;" k="13" />
+<hkern u1="&#x39e;" u2="&#x1ed6;" k="13" />
+<hkern u1="&#x39e;" u2="&#x1ed4;" k="13" />
+<hkern u1="&#x39e;" u2="&#x1ed2;" k="13" />
+<hkern u1="&#x39e;" u2="&#x1ed0;" k="13" />
+<hkern u1="&#x39e;" u2="&#x1ece;" k="13" />
+<hkern u1="&#x39e;" u2="&#x1ecc;" k="13" />
+<hkern u1="&#x39e;" u2="&#x50c;" k="13" />
+<hkern u1="&#x39e;" u2="&#x4ea;" k="13" />
+<hkern u1="&#x39e;" u2="&#x4e8;" k="13" />
+<hkern u1="&#x39e;" u2="&#x4e6;" k="13" />
+<hkern u1="&#x39e;" u2="&#x4aa;" k="13" />
+<hkern u1="&#x39e;" u2="&#x4a8;" k="13" />
+<hkern u1="&#x39e;" u2="&#x480;" k="13" />
+<hkern u1="&#x39e;" u2="&#x47e;" k="13" />
+<hkern u1="&#x39e;" u2="&#x47c;" k="13" />
+<hkern u1="&#x39e;" u2="&#x47a;" k="13" />
+<hkern u1="&#x39e;" u2="&#x478;" k="13" />
+<hkern u1="&#x39e;" u2="&#x472;" k="13" />
+<hkern u1="&#x39e;" u2="&#x460;" k="13" />
+<hkern u1="&#x39e;" u2="&#x421;" k="13" />
+<hkern u1="&#x39e;" u2="&#x41e;" k="13" />
+<hkern u1="&#x39e;" u2="&#x404;" k="13" />
+<hkern u1="&#x39e;" u2="&#x3bb;" k="-13" />
+<hkern u1="&#x39e;" u2="&#x39f;" k="13" />
+<hkern u1="&#x39e;" u2="&#x398;" k="13" />
+<hkern u1="&#x39e;" u2="&#x38c;" k="13" />
+<hkern u1="&#x39e;" u2="&#x1fe;" k="13" />
+<hkern u1="&#x39e;" u2="&#x1a0;" k="13" />
+<hkern u1="&#x39e;" u2="&#x152;" k="13" />
+<hkern u1="&#x39e;" u2="&#x150;" k="13" />
+<hkern u1="&#x39e;" u2="&#x14e;" k="13" />
+<hkern u1="&#x39e;" u2="&#x14c;" k="13" />
+<hkern u1="&#x39e;" u2="&#x122;" k="13" />
+<hkern u1="&#x39e;" u2="&#x120;" k="13" />
+<hkern u1="&#x39e;" u2="&#x11e;" k="13" />
+<hkern u1="&#x39e;" u2="&#x11c;" k="13" />
+<hkern u1="&#x39e;" u2="&#x10c;" k="13" />
+<hkern u1="&#x39e;" u2="&#x10a;" k="13" />
+<hkern u1="&#x39e;" u2="&#x108;" k="13" />
+<hkern u1="&#x39e;" u2="&#x106;" k="13" />
+<hkern u1="&#x39e;" u2="&#xd8;" k="13" />
+<hkern u1="&#x39e;" u2="&#xd6;" k="13" />
+<hkern u1="&#x39e;" u2="&#xd5;" k="13" />
+<hkern u1="&#x39e;" u2="&#xd4;" k="13" />
+<hkern u1="&#x39e;" u2="&#xd3;" k="13" />
+<hkern u1="&#x39e;" u2="&#xd2;" k="13" />
+<hkern u1="&#x39e;" u2="&#xc7;" k="13" />
+<hkern u1="&#x39e;" u2="Q" k="13" />
+<hkern u1="&#x39e;" u2="O" k="13" />
+<hkern u1="&#x39e;" u2="G" k="13" />
+<hkern u1="&#x39e;" u2="C" k="13" />
+<hkern u1="&#x39f;" g2="X.smcp" k="11" />
+<hkern u1="&#x39f;" u2="&#x50e;" k="32" />
+<hkern u1="&#x39f;" u2="&#x42c;" k="32" />
+<hkern u1="&#x39f;" u2="&#x414;" k="33" />
+<hkern u1="&#x39f;" u2="&#x3bb;" k="22" />
+<hkern u1="&#x39f;" u2="&#x3a3;" k="16" />
+<hkern u1="&#x39f;" u2="&#x39e;" k="13" />
+<hkern u1="&#x39f;" u2="&#xc6;" k="33" />
+<hkern u1="&#x3a1;" u2="&#x500;" k="48" />
+<hkern u1="&#x3a1;" u2="&#x434;" k="171" />
+<hkern u1="&#x3a1;" u2="&#x414;" k="235" />
+<hkern u1="&#x3a1;" u2="&#x3c1;" k="56" />
+<hkern u1="&#x3a1;" u2="&#x3bb;" k="102" />
+<hkern u1="&#x3a1;" u2="&#x3b4;" k="40" />
+<hkern u1="&#x3a1;" u2="&#xc6;" k="293" />
+<hkern u1="&#x3a1;" u2="t" k="-14" />
+<hkern u1="&#x3a3;" u2="&#x1f4d;" k="26" />
+<hkern u1="&#x3a3;" u2="&#x1ee2;" k="26" />
+<hkern u1="&#x3a3;" u2="&#x1ee0;" k="26" />
+<hkern u1="&#x3a3;" u2="&#x1ede;" k="26" />
+<hkern u1="&#x3a3;" u2="&#x1edc;" k="26" />
+<hkern u1="&#x3a3;" u2="&#x1eda;" k="26" />
+<hkern u1="&#x3a3;" u2="&#x1ed8;" k="26" />
+<hkern u1="&#x3a3;" u2="&#x1ed6;" k="26" />
+<hkern u1="&#x3a3;" u2="&#x1ed4;" k="26" />
+<hkern u1="&#x3a3;" u2="&#x1ed2;" k="26" />
+<hkern u1="&#x3a3;" u2="&#x1ed0;" k="26" />
+<hkern u1="&#x3a3;" u2="&#x1ece;" k="26" />
+<hkern u1="&#x3a3;" u2="&#x1ecc;" k="26" />
+<hkern u1="&#x3a3;" u2="&#x50c;" k="26" />
+<hkern u1="&#x3a3;" u2="&#x4ea;" k="26" />
+<hkern u1="&#x3a3;" u2="&#x4e8;" k="26" />
+<hkern u1="&#x3a3;" u2="&#x4e6;" k="26" />
+<hkern u1="&#x3a3;" u2="&#x4aa;" k="26" />
+<hkern u1="&#x3a3;" u2="&#x4a8;" k="26" />
+<hkern u1="&#x3a3;" u2="&#x480;" k="26" />
+<hkern u1="&#x3a3;" u2="&#x47e;" k="26" />
+<hkern u1="&#x3a3;" u2="&#x47c;" k="26" />
+<hkern u1="&#x3a3;" u2="&#x47a;" k="26" />
+<hkern u1="&#x3a3;" u2="&#x478;" k="26" />
+<hkern u1="&#x3a3;" u2="&#x472;" k="26" />
+<hkern u1="&#x3a3;" u2="&#x460;" k="26" />
+<hkern u1="&#x3a3;" u2="&#x421;" k="26" />
+<hkern u1="&#x3a3;" u2="&#x41e;" k="26" />
+<hkern u1="&#x3a3;" u2="&#x404;" k="26" />
+<hkern u1="&#x3a3;" u2="&#x3bb;" k="-16" />
+<hkern u1="&#x3a3;" u2="&#x3a6;" k="62" />
+<hkern u1="&#x3a3;" u2="&#x39f;" k="26" />
+<hkern u1="&#x3a3;" u2="&#x398;" k="26" />
+<hkern u1="&#x3a3;" u2="&#x38c;" k="26" />
+<hkern u1="&#x3a3;" u2="&#x1fe;" k="26" />
+<hkern u1="&#x3a3;" u2="&#x1a0;" k="26" />
+<hkern u1="&#x3a3;" u2="&#x152;" k="26" />
+<hkern u1="&#x3a3;" u2="&#x150;" k="26" />
+<hkern u1="&#x3a3;" u2="&#x14e;" k="26" />
+<hkern u1="&#x3a3;" u2="&#x14c;" k="26" />
+<hkern u1="&#x3a3;" u2="&#x122;" k="26" />
+<hkern u1="&#x3a3;" u2="&#x120;" k="26" />
+<hkern u1="&#x3a3;" u2="&#x11e;" k="26" />
+<hkern u1="&#x3a3;" u2="&#x11c;" k="26" />
+<hkern u1="&#x3a3;" u2="&#x10c;" k="26" />
+<hkern u1="&#x3a3;" u2="&#x10a;" k="26" />
+<hkern u1="&#x3a3;" u2="&#x108;" k="26" />
+<hkern u1="&#x3a3;" u2="&#x106;" k="26" />
+<hkern u1="&#x3a3;" u2="&#xd8;" k="26" />
+<hkern u1="&#x3a3;" u2="&#xd6;" k="26" />
+<hkern u1="&#x3a3;" u2="&#xd5;" k="26" />
+<hkern u1="&#x3a3;" u2="&#xd4;" k="26" />
+<hkern u1="&#x3a3;" u2="&#xd3;" k="26" />
+<hkern u1="&#x3a3;" u2="&#xd2;" k="26" />
+<hkern u1="&#x3a3;" u2="&#xc7;" k="26" />
+<hkern u1="&#x3a3;" u2="Q" k="26" />
+<hkern u1="&#x3a3;" u2="O" k="26" />
+<hkern u1="&#x3a3;" u2="G" k="26" />
+<hkern u1="&#x3a3;" u2="C" k="26" />
+<hkern u1="&#x3a4;" g2="Q.smcp" k="71" />
+<hkern u1="&#x3a4;" g2="S.smcp" k="68" />
+<hkern u1="&#x3a4;" g2="T.smcp" k="15" />
+<hkern u1="&#x3a4;" g2="W.smcp" k="15" />
+<hkern u1="&#x3a4;" g2="X.smcp" k="19" />
+<hkern u1="&#x3a4;" u2="&#x510;" k="14" />
+<hkern u1="&#x3a4;" u2="&#x50f;" k="111" />
+<hkern u1="&#x3a4;" u2="&#x50e;" k="-15" />
+<hkern u1="&#x3a4;" u2="&#x50b;" k="133" />
+<hkern u1="&#x3a4;" u2="&#x507;" k="83" />
+<hkern u1="&#x3a4;" u2="&#x505;" k="110" />
+<hkern u1="&#x3a4;" u2="&#x500;" k="149" />
+<hkern u1="&#x3a4;" u2="&#x4d8;" k="26" />
+<hkern u1="&#x3a4;" u2="&#x4bd;" k="148" />
+<hkern u1="&#x3a4;" u2="&#x4bc;" k="102" />
+<hkern u1="&#x3a4;" u2="&#x4bb;" k="132" />
+<hkern u1="&#x3a4;" u2="&#x4b9;" k="132" />
+<hkern u1="&#x3a4;" u2="&#x4a7;" k="96" />
+<hkern u1="&#x3a4;" u2="&#x4a1;" k="77" />
+<hkern u1="&#x3a4;" u2="&#x49d;" k="131" />
+<hkern u1="&#x3a4;" u2="&#x491;" k="104" />
+<hkern u1="&#x3a4;" u2="&#x48f;" k="127" />
+<hkern u1="&#x3a4;" u2="&#x47f;" k="38" />
+<hkern u1="&#x3a4;" u2="&#x47b;" k="153" />
+<hkern u1="&#x3a4;" u2="&#x461;" k="129" />
+<hkern u1="&#x3a4;" u2="&#x45f;" k="131" />
+<hkern u1="&#x3a4;" u2="&#x44f;" k="135" />
+<hkern u1="&#x3a4;" u2="&#x44d;" k="128" />
+<hkern u1="&#x3a4;" u2="&#x44b;" k="131" />
+<hkern u1="&#x3a4;" u2="&#x442;" k="78" />
+<hkern u1="&#x3a4;" u2="&#x437;" k="128" />
+<hkern u1="&#x3a4;" u2="&#x434;" k="140" />
+<hkern u1="&#x3a4;" u2="&#x432;" k="96" />
+<hkern u1="&#x3a4;" u2="&#x431;" k="28" />
+<hkern u1="&#x3a4;" u2="&#x42c;" k="-15" />
+<hkern u1="&#x3a4;" u2="&#x414;" k="81" />
+<hkern u1="&#x3a4;" u2="&#x3c9;" k="132" />
+<hkern u1="&#x3a4;" u2="&#x3c8;" k="131" />
+<hkern u1="&#x3a4;" u2="&#x3c7;" k="77" />
+<hkern u1="&#x3a4;" u2="&#x3c6;" k="130" />
+<hkern u1="&#x3a4;" u2="&#x3c4;" k="78" />
+<hkern u1="&#x3a4;" u2="&#x3c1;" k="135" />
+<hkern u1="&#x3a4;" u2="&#x3c0;" k="101" />
+<hkern u1="&#x3a4;" u2="&#x3b9;" k="133" />
+<hkern u1="&#x3a4;" u2="&#x3b5;" k="130" />
+<hkern u1="&#x3a4;" u2="&#x3b4;" k="15" />
+<hkern u1="&#x3a4;" u2="&#x3a6;" k="72" />
+<hkern u1="&#x3a4;" u2="&#xf8;" k="95" />
+<hkern u1="&#x3a4;" u2="&#xe6;" k="84" />
+<hkern u1="&#x3a4;" u2="&#xc6;" k="188" />
+<hkern u1="&#x3a4;" u2="&#xbb;" k="147" />
+<hkern u1="&#x3a4;" u2="&#xab;" k="151" />
+<hkern u1="&#x3a4;" u2="w" k="47" />
+<hkern u1="&#x3a4;" u2="r" k="65" />
+<hkern u1="&#x3a5;" g2="Q.smcp" k="53" />
+<hkern u1="&#x3a5;" g2="T.smcp" k="13" />
+<hkern u1="&#x3a5;" g2="W.smcp" k="13" />
+<hkern u1="&#x3a5;" g2="X.smcp" k="17" />
+<hkern u1="&#x3a5;" u2="&#x2022;" k="45" />
+<hkern u1="&#x3a5;" u2="&#x3c9;" k="57" />
+<hkern u1="&#x3a5;" u2="&#x3c8;" k="38" />
+<hkern u1="&#x3a5;" u2="&#x3c7;" k="63" />
+<hkern u1="&#x3a5;" u2="&#x3c6;" k="53" />
+<hkern u1="&#x3a5;" u2="&#x3c4;" k="23" />
+<hkern u1="&#x3a5;" u2="&#x3c1;" k="70" />
+<hkern u1="&#x3a5;" u2="&#x3c0;" k="24" />
+<hkern u1="&#x3a5;" u2="&#x3b9;" k="42" />
+<hkern u1="&#x3a5;" u2="&#x3b8;" k="23" />
+<hkern u1="&#x3a5;" u2="&#x3b6;" k="-13" />
+<hkern u1="&#x3a5;" u2="&#x3b5;" k="58" />
+<hkern u1="&#x3a5;" u2="&#x3b4;" k="18" />
+<hkern u1="&#x3a5;" u2="&#x3b2;" k="22" />
+<hkern u1="&#x3a5;" u2="&#x3a6;" k="48" />
+<hkern u1="&#x3a5;" u2="&#xf8;" k="64" />
+<hkern u1="&#x3a5;" u2="&#xe6;" k="63" />
+<hkern u1="&#x3a5;" u2="&#xc6;" k="96" />
+<hkern u1="&#x3a5;" u2="&#xbb;" k="51" />
+<hkern u1="&#x3a5;" u2="&#xab;" k="82" />
+<hkern u1="&#x3a5;" u2="&#x7d;" k="-19" />
+<hkern u1="&#x3a5;" u2="t" k="22" />
+<hkern u1="&#x3a5;" u2="r" k="40" />
+<hkern u1="&#x3a5;" u2="f" k="22" />
+<hkern u1="&#x3a5;" u2="]" k="-18" />
+<hkern u1="&#x3a5;" u2="&#x2a;" k="49" />
+<hkern u1="&#x3a5;" u2="&#x29;" k="-20" />
+<hkern u1="&#x3a5;" u2="&#x26;" k="30" />
+<hkern u1="&#x3a6;" u2="&#x1ef8;" k="45" />
+<hkern u1="&#x3a6;" u2="&#x1ef6;" k="45" />
+<hkern u1="&#x3a6;" u2="&#x1ef4;" k="45" />
+<hkern u1="&#x3a6;" u2="&#x1ef2;" k="45" />
+<hkern u1="&#x3a6;" u2="&#x1eb6;" k="28" />
+<hkern u1="&#x3a6;" u2="&#x1eb4;" k="28" />
+<hkern u1="&#x3a6;" u2="&#x1eb2;" k="28" />
+<hkern u1="&#x3a6;" u2="&#x1eb0;" k="28" />
+<hkern u1="&#x3a6;" u2="&#x1eae;" k="28" />
+<hkern u1="&#x3a6;" u2="&#x1eac;" k="28" />
+<hkern u1="&#x3a6;" u2="&#x1eaa;" k="28" />
+<hkern u1="&#x3a6;" u2="&#x1ea8;" k="28" />
+<hkern u1="&#x3a6;" u2="&#x1ea6;" k="28" />
+<hkern u1="&#x3a6;" u2="&#x1ea4;" k="28" />
+<hkern u1="&#x3a6;" u2="&#x1ea2;" k="28" />
+<hkern u1="&#x3a6;" u2="&#x1ea0;" k="28" />
+<hkern u1="&#x3a6;" u2="&#x1e00;" k="28" />
+<hkern u1="&#x3a6;" u2="&#x4fc;" k="46" />
+<hkern u1="&#x3a6;" u2="&#x4dc;" k="46" />
+<hkern u1="&#x3a6;" u2="&#x4d2;" k="28" />
+<hkern u1="&#x3a6;" u2="&#x4d0;" k="28" />
+<hkern u1="&#x3a6;" u2="&#x4c1;" k="46" />
+<hkern u1="&#x3a6;" u2="&#x4b2;" k="46" />
+<hkern u1="&#x3a6;" u2="&#x4b0;" k="45" />
+<hkern u1="&#x3a6;" u2="&#x4ae;" k="45" />
+<hkern u1="&#x3a6;" u2="&#x496;" k="46" />
+<hkern u1="&#x3a6;" u2="&#x466;" k="28" />
+<hkern u1="&#x3a6;" u2="&#x425;" k="46" />
+<hkern u1="&#x3a6;" u2="&#x416;" k="46" />
+<hkern u1="&#x3a6;" u2="&#x410;" k="28" />
+<hkern u1="&#x3a6;" u2="&#x3bb;" k="30" />
+<hkern u1="&#x3a6;" u2="&#x3ab;" k="45" />
+<hkern u1="&#x3a6;" u2="&#x3a7;" k="46" />
+<hkern u1="&#x3a6;" u2="&#x3a5;" k="45" />
+<hkern u1="&#x3a6;" u2="&#x39b;" k="28" />
+<hkern u1="&#x3a6;" u2="&#x394;" k="28" />
+<hkern u1="&#x3a6;" u2="&#x391;" k="28" />
+<hkern u1="&#x3a6;" u2="&#x38e;" k="45" />
+<hkern u1="&#x3a6;" u2="&#x386;" k="28" />
+<hkern u1="&#x3a6;" u2="&#x1fa;" k="28" />
+<hkern u1="&#x3a6;" u2="&#x178;" k="45" />
+<hkern u1="&#x3a6;" u2="&#x176;" k="45" />
+<hkern u1="&#x3a6;" u2="&#x104;" k="28" />
+<hkern u1="&#x3a6;" u2="&#x102;" k="28" />
+<hkern u1="&#x3a6;" u2="&#x100;" k="28" />
+<hkern u1="&#x3a6;" u2="&#xdd;" k="45" />
+<hkern u1="&#x3a6;" u2="&#xc5;" k="28" />
+<hkern u1="&#x3a6;" u2="&#xc4;" k="28" />
+<hkern u1="&#x3a6;" u2="&#xc3;" k="28" />
+<hkern u1="&#x3a6;" u2="&#xc2;" k="28" />
+<hkern u1="&#x3a6;" u2="&#xc1;" k="28" />
+<hkern u1="&#x3a6;" u2="&#xc0;" k="28" />
+<hkern u1="&#x3a6;" u2="Y" k="45" />
+<hkern u1="&#x3a6;" u2="X" k="46" />
+<hkern u1="&#x3a6;" u2="A" k="28" />
+<hkern u1="&#x3a7;" g2="Q.smcp" k="23" />
+<hkern u1="&#x3a7;" u2="&#x510;" k="14" />
+<hkern u1="&#x3a7;" u2="&#x50f;" k="42" />
+<hkern u1="&#x3a7;" u2="&#x506;" k="-12" />
+<hkern u1="&#x3a7;" u2="&#x504;" k="-13" />
+<hkern u1="&#x3a7;" u2="&#x4d8;" k="25" />
+<hkern u1="&#x3a7;" u2="&#x4bd;" k="59" />
+<hkern u1="&#x3a7;" u2="&#x4bc;" k="42" />
+<hkern u1="&#x3a7;" u2="&#x4b9;" k="45" />
+<hkern u1="&#x3a7;" u2="&#x4a1;" k="41" />
+<hkern u1="&#x3a7;" u2="&#x442;" k="41" />
+<hkern u1="&#x3a7;" u2="&#x431;" k="23" />
+<hkern u1="&#x3a7;" u2="&#x414;" k="-18" />
+<hkern u1="&#x3a7;" u2="&#x3c9;" k="18" />
+<hkern u1="&#x3a7;" u2="&#x3c8;" k="27" />
+<hkern u1="&#x3a7;" u2="&#x3c6;" k="25" />
+<hkern u1="&#x3a7;" u2="&#x3c4;" k="32" />
+<hkern u1="&#x3a7;" u2="&#x3bb;" k="-17" />
+<hkern u1="&#x3a7;" u2="&#x3b8;" k="19" />
+<hkern u1="&#x3a7;" u2="&#x3b4;" k="16" />
+<hkern u1="&#x3a7;" u2="&#x3a6;" k="44" />
+<hkern u1="&#x3a8;" u2="&#x2026;" k="186" />
+<hkern u1="&#x3a8;" u2="&#x2025;" k="186" />
+<hkern u1="&#x3a8;" u2="&#x201e;" k="186" />
+<hkern u1="&#x3a8;" u2="&#x201a;" k="186" />
+<hkern u1="&#x3a8;" u2="&#x1eb6;" k="51" />
+<hkern u1="&#x3a8;" u2="&#x1eb4;" k="51" />
+<hkern u1="&#x3a8;" u2="&#x1eb2;" k="51" />
+<hkern u1="&#x3a8;" u2="&#x1eb0;" k="51" />
+<hkern u1="&#x3a8;" u2="&#x1eae;" k="51" />
+<hkern u1="&#x3a8;" u2="&#x1eac;" k="51" />
+<hkern u1="&#x3a8;" u2="&#x1eaa;" k="51" />
+<hkern u1="&#x3a8;" u2="&#x1ea8;" k="51" />
+<hkern u1="&#x3a8;" u2="&#x1ea6;" k="51" />
+<hkern u1="&#x3a8;" u2="&#x1ea4;" k="51" />
+<hkern u1="&#x3a8;" u2="&#x1ea2;" k="51" />
+<hkern u1="&#x3a8;" u2="&#x1ea0;" k="51" />
+<hkern u1="&#x3a8;" u2="&#x1e00;" k="51" />
+<hkern u1="&#x3a8;" u2="&#x4d2;" k="51" />
+<hkern u1="&#x3a8;" u2="&#x4d0;" k="51" />
+<hkern u1="&#x3a8;" u2="&#x466;" k="51" />
+<hkern u1="&#x3a8;" u2="&#x410;" k="51" />
+<hkern u1="&#x3a8;" u2="&#x3c1;" k="14" />
+<hkern u1="&#x3a8;" u2="&#x39b;" k="51" />
+<hkern u1="&#x3a8;" u2="&#x394;" k="51" />
+<hkern u1="&#x3a8;" u2="&#x391;" k="51" />
+<hkern u1="&#x3a8;" u2="&#x386;" k="51" />
+<hkern u1="&#x3a8;" u2="&#x1fa;" k="51" />
+<hkern u1="&#x3a8;" u2="&#x104;" k="51" />
+<hkern u1="&#x3a8;" u2="&#x102;" k="51" />
+<hkern u1="&#x3a8;" u2="&#x100;" k="51" />
+<hkern u1="&#x3a8;" u2="&#xc5;" k="51" />
+<hkern u1="&#x3a8;" u2="&#xc4;" k="51" />
+<hkern u1="&#x3a8;" u2="&#xc3;" k="51" />
+<hkern u1="&#x3a8;" u2="&#xc2;" k="51" />
+<hkern u1="&#x3a8;" u2="&#xc1;" k="51" />
+<hkern u1="&#x3a8;" u2="&#xc0;" k="51" />
+<hkern u1="&#x3a8;" u2="A" k="51" />
+<hkern u1="&#x3a8;" u2="&#x3a;" k="186" />
+<hkern u1="&#x3a8;" u2="&#x2e;" k="186" />
+<hkern u1="&#x3a8;" u2="&#x2c;" k="186" />
+<hkern u1="&#x3aa;" u2="&#x50e;" k="28" />
+<hkern u1="&#x3aa;" u2="&#x506;" k="30" />
+<hkern u1="&#x3aa;" u2="&#x504;" k="29" />
+<hkern u1="&#x3aa;" u2="&#x4bc;" k="28" />
+<hkern u1="&#x3aa;" u2="&#x4b9;" k="27" />
+<hkern u1="&#x3aa;" u2="&#x4b8;" k="28" />
+<hkern u1="&#x3aa;" u2="&#x434;" k="-21" />
+<hkern u1="&#x3aa;" u2="&#x414;" k="-21" />
+<hkern u1="&#x3ab;" g2="Q.smcp" k="53" />
+<hkern u1="&#x3ab;" g2="T.smcp" k="13" />
+<hkern u1="&#x3ab;" g2="W.smcp" k="13" />
+<hkern u1="&#x3ab;" g2="X.smcp" k="17" />
+<hkern u1="&#x3ab;" u2="&#x2022;" k="45" />
+<hkern u1="&#x3ab;" u2="&#x3c9;" k="57" />
+<hkern u1="&#x3ab;" u2="&#x3c8;" k="38" />
+<hkern u1="&#x3ab;" u2="&#x3c7;" k="63" />
+<hkern u1="&#x3ab;" u2="&#x3c6;" k="53" />
+<hkern u1="&#x3ab;" u2="&#x3c4;" k="23" />
+<hkern u1="&#x3ab;" u2="&#x3c1;" k="70" />
+<hkern u1="&#x3ab;" u2="&#x3c0;" k="24" />
+<hkern u1="&#x3ab;" u2="&#x3b9;" k="42" />
+<hkern u1="&#x3ab;" u2="&#x3b8;" k="23" />
+<hkern u1="&#x3ab;" u2="&#x3b6;" k="-13" />
+<hkern u1="&#x3ab;" u2="&#x3b5;" k="58" />
+<hkern u1="&#x3ab;" u2="&#x3b4;" k="18" />
+<hkern u1="&#x3ab;" u2="&#x3b2;" k="22" />
+<hkern u1="&#x3ab;" u2="&#x3a6;" k="48" />
+<hkern u1="&#x3ab;" u2="&#xf8;" k="64" />
+<hkern u1="&#x3ab;" u2="&#xe6;" k="63" />
+<hkern u1="&#x3ab;" u2="&#xc6;" k="96" />
+<hkern u1="&#x3ab;" u2="&#xbb;" k="51" />
+<hkern u1="&#x3ab;" u2="&#xab;" k="82" />
+<hkern u1="&#x3ab;" u2="&#x7d;" k="-19" />
+<hkern u1="&#x3ab;" u2="t" k="22" />
+<hkern u1="&#x3ab;" u2="r" k="40" />
+<hkern u1="&#x3ab;" u2="f" k="22" />
+<hkern u1="&#x3ab;" u2="]" k="-18" />
+<hkern u1="&#x3ab;" u2="&#x2a;" k="49" />
+<hkern u1="&#x3ab;" u2="&#x29;" k="-20" />
+<hkern u1="&#x3ab;" u2="&#x26;" k="30" />
+<hkern u1="&#x3b1;" u2="&#x3bb;" k="-14" />
+<hkern u1="&#x3b3;" u2="&#x47b;" k="15" />
+<hkern u1="&#x3b3;" u2="&#x434;" k="56" />
+<hkern u1="&#x3b3;" u2="&#x3c4;" k="-12" />
+<hkern u1="&#x3b3;" u2="&#x3c1;" k="22" />
+<hkern u1="&#x3b3;" u2="&#x3c0;" k="-11" />
+<hkern u1="&#x3b3;" u2="&#x3b4;" k="11" />
+<hkern u1="&#x3b3;" u2="f" k="-13" />
+<hkern u1="&#x3b4;" u2="&#x3c7;" k="20" />
+<hkern u1="&#x3b4;" u2="&#x3c4;" k="19" />
+<hkern u1="&#x3b6;" u2="&#x1ef9;" k="31" />
+<hkern u1="&#x3b6;" u2="&#x1ef7;" k="31" />
+<hkern u1="&#x3b6;" u2="&#x1ef5;" k="31" />
+<hkern u1="&#x3b6;" u2="&#x1ef3;" k="31" />
+<hkern u1="&#x3b6;" u2="&#x1ef1;" k="35" />
+<hkern u1="&#x3b6;" u2="&#x1eef;" k="35" />
+<hkern u1="&#x3b6;" u2="&#x1eed;" k="35" />
+<hkern u1="&#x3b6;" u2="&#x1eeb;" k="35" />
+<hkern u1="&#x3b6;" u2="&#x1ee9;" k="35" />
+<hkern u1="&#x3b6;" u2="&#x1ee7;" k="35" />
+<hkern u1="&#x3b6;" u2="&#x1ee5;" k="35" />
+<hkern u1="&#x3b6;" u2="&#x1ee3;" k="36" />
+<hkern u1="&#x3b6;" u2="&#x1ee1;" k="42" />
+<hkern u1="&#x3b6;" u2="&#x1edf;" k="36" />
+<hkern u1="&#x3b6;" u2="&#x1edd;" k="36" />
+<hkern u1="&#x3b6;" u2="&#x1edb;" k="36" />
+<hkern u1="&#x3b6;" u2="&#x1ed9;" k="42" />
+<hkern u1="&#x3b6;" u2="&#x1ed7;" k="42" />
+<hkern u1="&#x3b6;" u2="&#x1ed5;" k="42" />
+<hkern u1="&#x3b6;" u2="&#x1ed3;" k="42" />
+<hkern u1="&#x3b6;" u2="&#x1ed1;" k="42" />
+<hkern u1="&#x3b6;" u2="&#x1ecf;" k="42" />
+<hkern u1="&#x3b6;" u2="&#x1ecd;" k="42" />
+<hkern u1="&#x3b6;" u2="&#x1ec7;" k="36" />
+<hkern u1="&#x3b6;" u2="&#x1ec5;" k="36" />
+<hkern u1="&#x3b6;" u2="&#x1ec3;" k="36" />
+<hkern u1="&#x3b6;" u2="&#x1ec1;" k="36" />
+<hkern u1="&#x3b6;" u2="&#x1ebf;" k="36" />
+<hkern u1="&#x3b6;" u2="&#x1ebd;" k="36" />
+<hkern u1="&#x3b6;" u2="&#x1ebb;" k="36" />
+<hkern u1="&#x3b6;" u2="&#x1eb9;" k="36" />
+<hkern u1="&#x3b6;" u2="&#x1e3f;" k="62" />
+<hkern u1="&#x3b6;" u2="&#x50d;" k="36" />
+<hkern u1="&#x3b6;" u2="&#x503;" k="36" />
+<hkern u1="&#x3b6;" u2="&#x502;" k="36" />
+<hkern u1="&#x3b6;" u2="&#x501;" k="36" />
+<hkern u1="&#x3b6;" u2="&#x4fb;" k="62" />
+<hkern u1="&#x3b6;" u2="&#x4f9;" k="62" />
+<hkern u1="&#x3b6;" u2="&#x4f7;" k="62" />
+<hkern u1="&#x3b6;" u2="&#x4f3;" k="31" />
+<hkern u1="&#x3b6;" u2="&#x4f1;" k="31" />
+<hkern u1="&#x3b6;" u2="&#x4ef;" k="31" />
+<hkern u1="&#x3b6;" u2="&#x4eb;" k="42" />
+<hkern u1="&#x3b6;" u2="&#x4e9;" k="36" />
+<hkern u1="&#x3b6;" u2="&#x4e7;" k="42" />
+<hkern u1="&#x3b6;" u2="&#x4e5;" k="62" />
+<hkern u1="&#x3b6;" u2="&#x4e3;" k="62" />
+<hkern u1="&#x3b6;" u2="&#x4db;" k="36" />
+<hkern u1="&#x3b6;" u2="&#x4d9;" k="36" />
+<hkern u1="&#x3b6;" u2="&#x4d7;" k="36" />
+<hkern u1="&#x3b6;" u2="&#x4ce;" k="62" />
+<hkern u1="&#x3b6;" u2="&#x4ca;" k="62" />
+<hkern u1="&#x3b6;" u2="&#x4c8;" k="62" />
+<hkern u1="&#x3b6;" u2="&#x4af;" k="31" />
+<hkern u1="&#x3b6;" u2="&#x4ab;" k="36" />
+<hkern u1="&#x3b6;" u2="&#x4a9;" k="36" />
+<hkern u1="&#x3b6;" u2="&#x4a5;" k="62" />
+<hkern u1="&#x3b6;" u2="&#x4a3;" k="62" />
+<hkern u1="&#x3b6;" u2="&#x49b;" k="62" />
+<hkern u1="&#x3b6;" u2="&#x48b;" k="62" />
+<hkern u1="&#x3b6;" u2="&#x481;" k="36" />
+<hkern u1="&#x3b6;" u2="&#x47d;" k="36" />
+<hkern u1="&#x3b6;" u2="&#x479;" k="36" />
+<hkern u1="&#x3b6;" u2="&#x477;" k="31" />
+<hkern u1="&#x3b6;" u2="&#x475;" k="31" />
+<hkern u1="&#x3b6;" u2="&#x473;" k="42" />
+<hkern u1="&#x3b6;" u2="&#x45e;" k="31" />
+<hkern u1="&#x3b6;" u2="&#x45d;" k="62" />
+<hkern u1="&#x3b6;" u2="&#x45c;" k="62" />
+<hkern u1="&#x3b6;" u2="&#x45a;" k="62" />
+<hkern u1="&#x3b6;" u2="&#x454;" k="36" />
+<hkern u1="&#x3b6;" u2="&#x453;" k="62" />
+<hkern u1="&#x3b6;" u2="&#x451;" k="36" />
+<hkern u1="&#x3b6;" u2="&#x450;" k="36" />
+<hkern u1="&#x3b6;" u2="&#x44e;" k="62" />
+<hkern u1="&#x3b6;" u2="&#x44c;" k="62" />
+<hkern u1="&#x3b6;" u2="&#x449;" k="62" />
+<hkern u1="&#x3b6;" u2="&#x448;" k="62" />
+<hkern u1="&#x3b6;" u2="&#x446;" k="62" />
+<hkern u1="&#x3b6;" u2="&#x444;" k="36" />
+<hkern u1="&#x3b6;" u2="&#x443;" k="31" />
+<hkern u1="&#x3b6;" u2="&#x441;" k="36" />
+<hkern u1="&#x3b6;" u2="&#x440;" k="62" />
+<hkern u1="&#x3b6;" u2="&#x43f;" k="62" />
+<hkern u1="&#x3b6;" u2="&#x43e;" k="42" />
+<hkern u1="&#x3b6;" u2="&#x43d;" k="62" />
+<hkern u1="&#x3b6;" u2="&#x43c;" k="62" />
+<hkern u1="&#x3b6;" u2="&#x43a;" k="62" />
+<hkern u1="&#x3b6;" u2="&#x439;" k="62" />
+<hkern u1="&#x3b6;" u2="&#x438;" k="62" />
+<hkern u1="&#x3b6;" u2="&#x435;" k="36" />
+<hkern u1="&#x3b6;" u2="&#x433;" k="62" />
+<hkern u1="&#x3b6;" u2="&#x3cd;" k="35" />
+<hkern u1="&#x3b6;" u2="&#x3cc;" k="42" />
+<hkern u1="&#x3b6;" u2="&#x3cb;" k="35" />
+<hkern u1="&#x3b6;" u2="&#x3c9;" k="37" />
+<hkern u1="&#x3b6;" u2="&#x3c8;" k="44" />
+<hkern u1="&#x3b6;" u2="&#x3c6;" k="50" />
+<hkern u1="&#x3b6;" u2="&#x3c5;" k="35" />
+<hkern u1="&#x3b6;" u2="&#x3c4;" k="29" />
+<hkern u1="&#x3b6;" u2="&#x3c3;" k="36" />
+<hkern u1="&#x3b6;" u2="&#x3c2;" k="36" />
+<hkern u1="&#x3b6;" u2="&#x3c0;" k="25" />
+<hkern u1="&#x3b6;" u2="&#x3bf;" k="42" />
+<hkern u1="&#x3b6;" u2="&#x3be;" k="16" />
+<hkern u1="&#x3b6;" u2="&#x3bd;" k="31" />
+<hkern u1="&#x3b6;" u2="&#x3b9;" k="23" />
+<hkern u1="&#x3b6;" u2="&#x3b8;" k="21" />
+<hkern u1="&#x3b6;" u2="&#x3b7;" k="62" />
+<hkern u1="&#x3b6;" u2="&#x3b5;" k="26" />
+<hkern u1="&#x3b6;" u2="&#x3b4;" k="18" />
+<hkern u1="&#x3b6;" u2="&#x3b3;" k="31" />
+<hkern u1="&#x3b6;" u2="&#x3b1;" k="36" />
+<hkern u1="&#x3b6;" u2="&#x3b0;" k="35" />
+<hkern u1="&#x3b6;" u2="&#x3ae;" k="62" />
+<hkern u1="&#x3b6;" u2="&#x3ac;" k="36" />
+<hkern u1="&#x3b6;" u2="&#x1b0;" k="35" />
+<hkern u1="&#x3b6;" u2="&#x1a1;" k="36" />
+<hkern u1="&#x3b6;" u2="&#x177;" k="31" />
+<hkern u1="&#x3b6;" u2="&#x173;" k="35" />
+<hkern u1="&#x3b6;" u2="&#x171;" k="35" />
+<hkern u1="&#x3b6;" u2="&#x16f;" k="35" />
+<hkern u1="&#x3b6;" u2="&#x16d;" k="35" />
+<hkern u1="&#x3b6;" u2="&#x16b;" k="35" />
+<hkern u1="&#x3b6;" u2="&#x169;" k="35" />
+<hkern u1="&#x3b6;" u2="&#x153;" k="36" />
+<hkern u1="&#x3b6;" u2="&#x151;" k="42" />
+<hkern u1="&#x3b6;" u2="&#x14f;" k="42" />
+<hkern u1="&#x3b6;" u2="&#x14d;" k="42" />
+<hkern u1="&#x3b6;" u2="&#x149;" k="62" />
+<hkern u1="&#x3b6;" u2="&#x148;" k="62" />
+<hkern u1="&#x3b6;" u2="&#x146;" k="62" />
+<hkern u1="&#x3b6;" u2="&#x144;" k="62" />
+<hkern u1="&#x3b6;" u2="&#x123;" k="36" />
+<hkern u1="&#x3b6;" u2="&#x121;" k="36" />
+<hkern u1="&#x3b6;" u2="&#x11f;" k="36" />
+<hkern u1="&#x3b6;" u2="&#x11d;" k="36" />
+<hkern u1="&#x3b6;" u2="&#x11b;" k="36" />
+<hkern u1="&#x3b6;" u2="&#x119;" k="36" />
+<hkern u1="&#x3b6;" u2="&#x117;" k="36" />
+<hkern u1="&#x3b6;" u2="&#x115;" k="36" />
+<hkern u1="&#x3b6;" u2="&#x113;" k="36" />
+<hkern u1="&#x3b6;" u2="&#x10f;" k="36" />
+<hkern u1="&#x3b6;" u2="&#x10d;" k="36" />
+<hkern u1="&#x3b6;" u2="&#x10b;" k="36" />
+<hkern u1="&#x3b6;" u2="&#x109;" k="36" />
+<hkern u1="&#x3b6;" u2="&#x107;" k="36" />
+<hkern u1="&#x3b6;" u2="&#xff;" k="31" />
+<hkern u1="&#x3b6;" u2="&#xfd;" k="31" />
+<hkern u1="&#x3b6;" u2="&#xfc;" k="35" />
+<hkern u1="&#x3b6;" u2="&#xfb;" k="35" />
+<hkern u1="&#x3b6;" u2="&#xfa;" k="35" />
+<hkern u1="&#x3b6;" u2="&#xf9;" k="35" />
+<hkern u1="&#x3b6;" u2="&#xf6;" k="42" />
+<hkern u1="&#x3b6;" u2="&#xf5;" k="42" />
+<hkern u1="&#x3b6;" u2="&#xf4;" k="42" />
+<hkern u1="&#x3b6;" u2="&#xf3;" k="42" />
+<hkern u1="&#x3b6;" u2="&#xf2;" k="42" />
+<hkern u1="&#x3b6;" u2="&#xf1;" k="62" />
+<hkern u1="&#x3b6;" u2="&#xeb;" k="36" />
+<hkern u1="&#x3b6;" u2="&#xea;" k="36" />
+<hkern u1="&#x3b6;" u2="&#xe9;" k="36" />
+<hkern u1="&#x3b6;" u2="&#xe8;" k="36" />
+<hkern u1="&#x3b6;" u2="&#xe7;" k="36" />
+<hkern u1="&#x3b6;" u2="y" k="31" />
+<hkern u1="&#x3b6;" u2="v" k="31" />
+<hkern u1="&#x3b6;" u2="u" k="35" />
+<hkern u1="&#x3b6;" u2="q" k="36" />
+<hkern u1="&#x3b6;" u2="p" k="62" />
+<hkern u1="&#x3b6;" u2="o" k="42" />
+<hkern u1="&#x3b6;" u2="n" k="62" />
+<hkern u1="&#x3b6;" u2="m" k="62" />
+<hkern u1="&#x3b6;" u2="g" k="36" />
+<hkern u1="&#x3b6;" u2="e" k="36" />
+<hkern u1="&#x3b6;" u2="d" k="36" />
+<hkern u1="&#x3b6;" u2="c" k="36" />
+<hkern u1="&#x3b9;" u2="&#x2033;" k="38" />
+<hkern u1="&#x3b9;" u2="&#x2032;" k="38" />
+<hkern u1="&#x3b9;" u2="&#x201d;" k="38" />
+<hkern u1="&#x3b9;" u2="&#x201c;" k="38" />
+<hkern u1="&#x3b9;" u2="&#x201b;" k="38" />
+<hkern u1="&#x3b9;" u2="&#x2019;" k="38" />
+<hkern u1="&#x3b9;" u2="&#x2018;" k="38" />
+<hkern u1="&#x3b9;" u2="&#x1ef9;" k="36" />
+<hkern u1="&#x3b9;" u2="&#x1ef7;" k="36" />
+<hkern u1="&#x3b9;" u2="&#x1ef5;" k="36" />
+<hkern u1="&#x3b9;" u2="&#x1ef3;" k="36" />
+<hkern u1="&#x3b9;" u2="&#x1ef1;" k="17" />
+<hkern u1="&#x3b9;" u2="&#x1eef;" k="17" />
+<hkern u1="&#x3b9;" u2="&#x1eed;" k="17" />
+<hkern u1="&#x3b9;" u2="&#x1eeb;" k="17" />
+<hkern u1="&#x3b9;" u2="&#x1ee9;" k="17" />
+<hkern u1="&#x3b9;" u2="&#x1ee7;" k="17" />
+<hkern u1="&#x3b9;" u2="&#x1ee5;" k="17" />
+<hkern u1="&#x3b9;" u2="&#x1ee3;" k="16" />
+<hkern u1="&#x3b9;" u2="&#x1edf;" k="16" />
+<hkern u1="&#x3b9;" u2="&#x1edd;" k="16" />
+<hkern u1="&#x3b9;" u2="&#x1edb;" k="16" />
+<hkern u1="&#x3b9;" u2="&#x1ec7;" k="16" />
+<hkern u1="&#x3b9;" u2="&#x1ec5;" k="16" />
+<hkern u1="&#x3b9;" u2="&#x1ec3;" k="16" />
+<hkern u1="&#x3b9;" u2="&#x1ec1;" k="16" />
+<hkern u1="&#x3b9;" u2="&#x1ebf;" k="16" />
+<hkern u1="&#x3b9;" u2="&#x1ebd;" k="16" />
+<hkern u1="&#x3b9;" u2="&#x1ebb;" k="16" />
+<hkern u1="&#x3b9;" u2="&#x1eb9;" k="16" />
+<hkern u1="&#x3b9;" u2="&#x50d;" k="16" />
+<hkern u1="&#x3b9;" u2="&#x503;" k="16" />
+<hkern u1="&#x3b9;" u2="&#x502;" k="16" />
+<hkern u1="&#x3b9;" u2="&#x501;" k="16" />
+<hkern u1="&#x3b9;" u2="&#x4f3;" k="36" />
+<hkern u1="&#x3b9;" u2="&#x4f1;" k="36" />
+<hkern u1="&#x3b9;" u2="&#x4ef;" k="36" />
+<hkern u1="&#x3b9;" u2="&#x4e9;" k="16" />
+<hkern u1="&#x3b9;" u2="&#x4db;" k="16" />
+<hkern u1="&#x3b9;" u2="&#x4d9;" k="16" />
+<hkern u1="&#x3b9;" u2="&#x4d7;" k="16" />
+<hkern u1="&#x3b9;" u2="&#x4af;" k="36" />
+<hkern u1="&#x3b9;" u2="&#x4ab;" k="16" />
+<hkern u1="&#x3b9;" u2="&#x4a9;" k="16" />
+<hkern u1="&#x3b9;" u2="&#x481;" k="16" />
+<hkern u1="&#x3b9;" u2="&#x47d;" k="16" />
+<hkern u1="&#x3b9;" u2="&#x479;" k="16" />
+<hkern u1="&#x3b9;" u2="&#x477;" k="36" />
+<hkern u1="&#x3b9;" u2="&#x475;" k="36" />
+<hkern u1="&#x3b9;" u2="&#x45e;" k="36" />
+<hkern u1="&#x3b9;" u2="&#x454;" k="16" />
+<hkern u1="&#x3b9;" u2="&#x451;" k="16" />
+<hkern u1="&#x3b9;" u2="&#x450;" k="16" />
+<hkern u1="&#x3b9;" u2="&#x444;" k="16" />
+<hkern u1="&#x3b9;" u2="&#x443;" k="36" />
+<hkern u1="&#x3b9;" u2="&#x441;" k="16" />
+<hkern u1="&#x3b9;" u2="&#x435;" k="16" />
+<hkern u1="&#x3b9;" u2="&#x3cd;" k="17" />
+<hkern u1="&#x3b9;" u2="&#x3cb;" k="17" />
+<hkern u1="&#x3b9;" u2="&#x3c6;" k="25" />
+<hkern u1="&#x3b9;" u2="&#x3c5;" k="17" />
+<hkern u1="&#x3b9;" u2="&#x3c4;" k="36" />
+<hkern u1="&#x3b9;" u2="&#x3c3;" k="16" />
+<hkern u1="&#x3b9;" u2="&#x3c2;" k="16" />
+<hkern u1="&#x3b9;" u2="&#x3c0;" k="22" />
+<hkern u1="&#x3b9;" u2="&#x3bd;" k="36" />
+<hkern u1="&#x3b9;" u2="&#x3bb;" k="-15" />
+<hkern u1="&#x3b9;" u2="&#x3b8;" k="20" />
+<hkern u1="&#x3b9;" u2="&#x3b3;" k="36" />
+<hkern u1="&#x3b9;" u2="&#x3b1;" k="16" />
+<hkern u1="&#x3b9;" u2="&#x3b0;" k="17" />
+<hkern u1="&#x3b9;" u2="&#x3ac;" k="16" />
+<hkern u1="&#x3b9;" u2="&#x2bc;" k="38" />
+<hkern u1="&#x3b9;" u2="&#x1b0;" k="17" />
+<hkern u1="&#x3b9;" u2="&#x1a1;" k="16" />
+<hkern u1="&#x3b9;" u2="&#x177;" k="36" />
+<hkern u1="&#x3b9;" u2="&#x173;" k="17" />
+<hkern u1="&#x3b9;" u2="&#x171;" k="17" />
+<hkern u1="&#x3b9;" u2="&#x16f;" k="17" />
+<hkern u1="&#x3b9;" u2="&#x16d;" k="17" />
+<hkern u1="&#x3b9;" u2="&#x16b;" k="17" />
+<hkern u1="&#x3b9;" u2="&#x169;" k="17" />
+<hkern u1="&#x3b9;" u2="&#x153;" k="16" />
+<hkern u1="&#x3b9;" u2="&#x123;" k="16" />
+<hkern u1="&#x3b9;" u2="&#x121;" k="16" />
+<hkern u1="&#x3b9;" u2="&#x11f;" k="16" />
+<hkern u1="&#x3b9;" u2="&#x11d;" k="16" />
+<hkern u1="&#x3b9;" u2="&#x11b;" k="16" />
+<hkern u1="&#x3b9;" u2="&#x119;" k="16" />
+<hkern u1="&#x3b9;" u2="&#x117;" k="16" />
+<hkern u1="&#x3b9;" u2="&#x115;" k="16" />
+<hkern u1="&#x3b9;" u2="&#x113;" k="16" />
+<hkern u1="&#x3b9;" u2="&#x10f;" k="16" />
+<hkern u1="&#x3b9;" u2="&#x10d;" k="16" />
+<hkern u1="&#x3b9;" u2="&#x10b;" k="16" />
+<hkern u1="&#x3b9;" u2="&#x109;" k="16" />
+<hkern u1="&#x3b9;" u2="&#x107;" k="16" />
+<hkern u1="&#x3b9;" u2="&#xff;" k="36" />
+<hkern u1="&#x3b9;" u2="&#xfd;" k="36" />
+<hkern u1="&#x3b9;" u2="&#xfc;" k="17" />
+<hkern u1="&#x3b9;" u2="&#xfb;" k="17" />
+<hkern u1="&#x3b9;" u2="&#xfa;" k="17" />
+<hkern u1="&#x3b9;" u2="&#xf9;" k="17" />
+<hkern u1="&#x3b9;" u2="&#xeb;" k="16" />
+<hkern u1="&#x3b9;" u2="&#xea;" k="16" />
+<hkern u1="&#x3b9;" u2="&#xe9;" k="16" />
+<hkern u1="&#x3b9;" u2="&#xe8;" k="16" />
+<hkern u1="&#x3b9;" u2="&#xe7;" k="16" />
+<hkern u1="&#x3b9;" u2="y" k="36" />
+<hkern u1="&#x3b9;" u2="v" k="36" />
+<hkern u1="&#x3b9;" u2="u" k="17" />
+<hkern u1="&#x3b9;" u2="q" k="16" />
+<hkern u1="&#x3b9;" u2="g" k="16" />
+<hkern u1="&#x3b9;" u2="e" k="16" />
+<hkern u1="&#x3b9;" u2="d" k="16" />
+<hkern u1="&#x3b9;" u2="c" k="16" />
+<hkern u1="&#x3b9;" u2="&#x27;" k="38" />
+<hkern u1="&#x3b9;" u2="&#x22;" k="38" />
+<hkern u1="&#x3bb;" u2="&#x2033;" k="96" />
+<hkern u1="&#x3bb;" u2="&#x2032;" k="96" />
+<hkern u1="&#x3bb;" u2="&#x201d;" k="96" />
+<hkern u1="&#x3bb;" u2="&#x201c;" k="96" />
+<hkern u1="&#x3bb;" u2="&#x201b;" k="96" />
+<hkern u1="&#x3bb;" u2="&#x2019;" k="96" />
+<hkern u1="&#x3bb;" u2="&#x2018;" k="96" />
+<hkern u1="&#x3bb;" u2="&#x1ef9;" k="59" />
+<hkern u1="&#x3bb;" u2="&#x1ef7;" k="59" />
+<hkern u1="&#x3bb;" u2="&#x1ef5;" k="59" />
+<hkern u1="&#x3bb;" u2="&#x1ef3;" k="59" />
+<hkern u1="&#x3bb;" u2="&#x1ef1;" k="15" />
+<hkern u1="&#x3bb;" u2="&#x1eef;" k="15" />
+<hkern u1="&#x3bb;" u2="&#x1eed;" k="15" />
+<hkern u1="&#x3bb;" u2="&#x1eeb;" k="15" />
+<hkern u1="&#x3bb;" u2="&#x1ee9;" k="15" />
+<hkern u1="&#x3bb;" u2="&#x1ee7;" k="15" />
+<hkern u1="&#x3bb;" u2="&#x1ee5;" k="15" />
+<hkern u1="&#x3bb;" u2="&#x4f3;" k="59" />
+<hkern u1="&#x3bb;" u2="&#x4f1;" k="59" />
+<hkern u1="&#x3bb;" u2="&#x4ef;" k="59" />
+<hkern u1="&#x3bb;" u2="&#x4af;" k="59" />
+<hkern u1="&#x3bb;" u2="&#x477;" k="59" />
+<hkern u1="&#x3bb;" u2="&#x475;" k="59" />
+<hkern u1="&#x3bb;" u2="&#x45e;" k="59" />
+<hkern u1="&#x3bb;" u2="&#x443;" k="59" />
+<hkern u1="&#x3bb;" u2="&#x3cd;" k="15" />
+<hkern u1="&#x3bb;" u2="&#x3cb;" k="15" />
+<hkern u1="&#x3bb;" u2="&#x3c7;" k="38" />
+<hkern u1="&#x3bb;" u2="&#x3c5;" k="15" />
+<hkern u1="&#x3bb;" u2="&#x3c4;" k="66" />
+<hkern u1="&#x3bb;" u2="&#x3c0;" k="20" />
+<hkern u1="&#x3bb;" u2="&#x3bd;" k="59" />
+<hkern u1="&#x3bb;" u2="&#x3bb;" k="-16" />
+<hkern u1="&#x3bb;" u2="&#x3b8;" k="18" />
+<hkern u1="&#x3bb;" u2="&#x3b3;" k="59" />
+<hkern u1="&#x3bb;" u2="&#x3b0;" k="15" />
+<hkern u1="&#x3bb;" u2="&#x2bc;" k="96" />
+<hkern u1="&#x3bb;" u2="&#x1b0;" k="15" />
+<hkern u1="&#x3bb;" u2="&#x177;" k="59" />
+<hkern u1="&#x3bb;" u2="&#x173;" k="15" />
+<hkern u1="&#x3bb;" u2="&#x171;" k="15" />
+<hkern u1="&#x3bb;" u2="&#x16f;" k="15" />
+<hkern u1="&#x3bb;" u2="&#x16d;" k="15" />
+<hkern u1="&#x3bb;" u2="&#x16b;" k="15" />
+<hkern u1="&#x3bb;" u2="&#x169;" k="15" />
+<hkern u1="&#x3bb;" u2="&#xff;" k="59" />
+<hkern u1="&#x3bb;" u2="&#xfd;" k="59" />
+<hkern u1="&#x3bb;" u2="&#xfc;" k="15" />
+<hkern u1="&#x3bb;" u2="&#xfb;" k="15" />
+<hkern u1="&#x3bb;" u2="&#xfa;" k="15" />
+<hkern u1="&#x3bb;" u2="&#xf9;" k="15" />
+<hkern u1="&#x3bb;" u2="y" k="59" />
+<hkern u1="&#x3bb;" u2="v" k="59" />
+<hkern u1="&#x3bb;" u2="u" k="15" />
+<hkern u1="&#x3bb;" u2="f" k="23" />
+<hkern u1="&#x3bb;" u2="&#x27;" k="96" />
+<hkern u1="&#x3bb;" u2="&#x22;" k="96" />
+<hkern u1="&#x3bd;" u2="&#x47b;" k="15" />
+<hkern u1="&#x3bd;" u2="&#x434;" k="56" />
+<hkern u1="&#x3bd;" u2="&#x3c4;" k="-12" />
+<hkern u1="&#x3bd;" u2="&#x3c1;" k="22" />
+<hkern u1="&#x3bd;" u2="&#x3c0;" k="-11" />
+<hkern u1="&#x3bd;" u2="&#x3b4;" k="11" />
+<hkern u1="&#x3bd;" u2="f" k="-13" />
+<hkern u1="&#x3be;" u2="&#x1ee3;" k="25" />
+<hkern u1="&#x3be;" u2="&#x1edf;" k="25" />
+<hkern u1="&#x3be;" u2="&#x1edd;" k="25" />
+<hkern u1="&#x3be;" u2="&#x1edb;" k="25" />
+<hkern u1="&#x3be;" u2="&#x1ec7;" k="25" />
+<hkern u1="&#x3be;" u2="&#x1ec5;" k="25" />
+<hkern u1="&#x3be;" u2="&#x1ec3;" k="25" />
+<hkern u1="&#x3be;" u2="&#x1ec1;" k="25" />
+<hkern u1="&#x3be;" u2="&#x1ebf;" k="25" />
+<hkern u1="&#x3be;" u2="&#x1ebd;" k="25" />
+<hkern u1="&#x3be;" u2="&#x1ebb;" k="25" />
+<hkern u1="&#x3be;" u2="&#x1eb9;" k="25" />
+<hkern u1="&#x3be;" u2="&#x50d;" k="25" />
+<hkern u1="&#x3be;" u2="&#x503;" k="25" />
+<hkern u1="&#x3be;" u2="&#x502;" k="25" />
+<hkern u1="&#x3be;" u2="&#x501;" k="25" />
+<hkern u1="&#x3be;" u2="&#x4e9;" k="25" />
+<hkern u1="&#x3be;" u2="&#x4db;" k="25" />
+<hkern u1="&#x3be;" u2="&#x4d9;" k="25" />
+<hkern u1="&#x3be;" u2="&#x4d7;" k="25" />
+<hkern u1="&#x3be;" u2="&#x4ab;" k="25" />
+<hkern u1="&#x3be;" u2="&#x4a9;" k="25" />
+<hkern u1="&#x3be;" u2="&#x481;" k="25" />
+<hkern u1="&#x3be;" u2="&#x47d;" k="25" />
+<hkern u1="&#x3be;" u2="&#x479;" k="25" />
+<hkern u1="&#x3be;" u2="&#x454;" k="25" />
+<hkern u1="&#x3be;" u2="&#x451;" k="25" />
+<hkern u1="&#x3be;" u2="&#x450;" k="25" />
+<hkern u1="&#x3be;" u2="&#x444;" k="25" />
+<hkern u1="&#x3be;" u2="&#x441;" k="25" />
+<hkern u1="&#x3be;" u2="&#x435;" k="25" />
+<hkern u1="&#x3be;" u2="&#x3c3;" k="25" />
+<hkern u1="&#x3be;" u2="&#x3c2;" k="25" />
+<hkern u1="&#x3be;" u2="&#x3bb;" k="-15" />
+<hkern u1="&#x3be;" u2="&#x3b1;" k="25" />
+<hkern u1="&#x3be;" u2="&#x3ac;" k="25" />
+<hkern u1="&#x3be;" u2="&#x1a1;" k="25" />
+<hkern u1="&#x3be;" u2="&#x153;" k="25" />
+<hkern u1="&#x3be;" u2="&#x123;" k="25" />
+<hkern u1="&#x3be;" u2="&#x121;" k="25" />
+<hkern u1="&#x3be;" u2="&#x11f;" k="25" />
+<hkern u1="&#x3be;" u2="&#x11d;" k="25" />
+<hkern u1="&#x3be;" u2="&#x11b;" k="25" />
+<hkern u1="&#x3be;" u2="&#x119;" k="25" />
+<hkern u1="&#x3be;" u2="&#x117;" k="25" />
+<hkern u1="&#x3be;" u2="&#x115;" k="25" />
+<hkern u1="&#x3be;" u2="&#x113;" k="25" />
+<hkern u1="&#x3be;" u2="&#x10f;" k="25" />
+<hkern u1="&#x3be;" u2="&#x10d;" k="25" />
+<hkern u1="&#x3be;" u2="&#x10b;" k="25" />
+<hkern u1="&#x3be;" u2="&#x109;" k="25" />
+<hkern u1="&#x3be;" u2="&#x107;" k="25" />
+<hkern u1="&#x3be;" u2="&#xeb;" k="25" />
+<hkern u1="&#x3be;" u2="&#xea;" k="25" />
+<hkern u1="&#x3be;" u2="&#xe9;" k="25" />
+<hkern u1="&#x3be;" u2="&#xe8;" k="25" />
+<hkern u1="&#x3be;" u2="&#xe7;" k="25" />
+<hkern u1="&#x3be;" u2="q" k="25" />
+<hkern u1="&#x3be;" u2="g" k="25" />
+<hkern u1="&#x3be;" u2="e" k="25" />
+<hkern u1="&#x3be;" u2="d" k="25" />
+<hkern u1="&#x3be;" u2="c" k="25" />
+<hkern u1="&#x3bf;" u2="&#x50f;" k="20" />
+<hkern u1="&#x3bf;" u2="&#x505;" k="11" />
+<hkern u1="&#x3bf;" u2="&#x4a1;" k="21" />
+<hkern u1="&#x3bf;" u2="&#x47f;" k="15" />
+<hkern u1="&#x3bf;" u2="&#x461;" k="16" />
+<hkern u1="&#x3bf;" u2="&#x442;" k="22" />
+<hkern u1="&#x3bf;" u2="&#x3c7;" k="22" />
+<hkern u1="&#x3bf;" u2="&#x3c4;" k="22" />
+<hkern u1="&#x3c1;" u2="&#x50f;" k="20" />
+<hkern u1="&#x3c1;" u2="&#x4a1;" k="20" />
+<hkern u1="&#x3c1;" u2="&#x442;" k="21" />
+<hkern u1="&#x3c1;" u2="&#x434;" k="18" />
+<hkern u1="&#x3c1;" u2="&#x3c7;" k="24" />
+<hkern u1="&#x3c1;" u2="&#x3c4;" k="22" />
+<hkern u1="&#x3c3;" u2="&#x3c4;" k="-11" />
+<hkern u1="&#x3c4;" g2="Q.smcp" k="20" />
+<hkern u1="&#x3c4;" g2="S.smcp" k="11" />
+<hkern u1="&#x3c4;" g2="T.smcp" k="-14" />
+<hkern u1="&#x3c4;" g2="V.smcp" k="-13" />
+<hkern u1="&#x3c4;" g2="Y.smcp" k="-13" />
+<hkern u1="&#x3c4;" u2="&#x2033;" k="-12" />
+<hkern u1="&#x3c4;" u2="&#x2032;" k="-12" />
+<hkern u1="&#x3c4;" u2="&#x201d;" k="-12" />
+<hkern u1="&#x3c4;" u2="&#x201c;" k="-12" />
+<hkern u1="&#x3c4;" u2="&#x201b;" k="-12" />
+<hkern u1="&#x3c4;" u2="&#x2019;" k="-12" />
+<hkern u1="&#x3c4;" u2="&#x2018;" k="-12" />
+<hkern u1="&#x3c4;" u2="&#x1ef9;" k="-11" />
+<hkern u1="&#x3c4;" u2="&#x1ef7;" k="-11" />
+<hkern u1="&#x3c4;" u2="&#x1ef5;" k="-11" />
+<hkern u1="&#x3c4;" u2="&#x1ef3;" k="-11" />
+<hkern u1="&#x3c4;" u2="&#x1ee3;" k="24" />
+<hkern u1="&#x3c4;" u2="&#x1ee1;" k="22" />
+<hkern u1="&#x3c4;" u2="&#x1edf;" k="24" />
+<hkern u1="&#x3c4;" u2="&#x1edd;" k="24" />
+<hkern u1="&#x3c4;" u2="&#x1edb;" k="24" />
+<hkern u1="&#x3c4;" u2="&#x1ed9;" k="22" />
+<hkern u1="&#x3c4;" u2="&#x1ed7;" k="22" />
+<hkern u1="&#x3c4;" u2="&#x1ed5;" k="22" />
+<hkern u1="&#x3c4;" u2="&#x1ed3;" k="22" />
+<hkern u1="&#x3c4;" u2="&#x1ed1;" k="22" />
+<hkern u1="&#x3c4;" u2="&#x1ecf;" k="22" />
+<hkern u1="&#x3c4;" u2="&#x1ecd;" k="22" />
+<hkern u1="&#x3c4;" u2="&#x1ec7;" k="24" />
+<hkern u1="&#x3c4;" u2="&#x1ec5;" k="24" />
+<hkern u1="&#x3c4;" u2="&#x1ec3;" k="24" />
+<hkern u1="&#x3c4;" u2="&#x1ec1;" k="24" />
+<hkern u1="&#x3c4;" u2="&#x1ebf;" k="24" />
+<hkern u1="&#x3c4;" u2="&#x1ebd;" k="24" />
+<hkern u1="&#x3c4;" u2="&#x1ebb;" k="24" />
+<hkern u1="&#x3c4;" u2="&#x1eb9;" k="24" />
+<hkern u1="&#x3c4;" u2="&#x50d;" k="24" />
+<hkern u1="&#x3c4;" u2="&#x503;" k="24" />
+<hkern u1="&#x3c4;" u2="&#x502;" k="24" />
+<hkern u1="&#x3c4;" u2="&#x501;" k="24" />
+<hkern u1="&#x3c4;" u2="&#x4f3;" k="-11" />
+<hkern u1="&#x3c4;" u2="&#x4f1;" k="-11" />
+<hkern u1="&#x3c4;" u2="&#x4ef;" k="-11" />
+<hkern u1="&#x3c4;" u2="&#x4eb;" k="22" />
+<hkern u1="&#x3c4;" u2="&#x4e9;" k="24" />
+<hkern u1="&#x3c4;" u2="&#x4e7;" k="22" />
+<hkern u1="&#x3c4;" u2="&#x4db;" k="24" />
+<hkern u1="&#x3c4;" u2="&#x4d9;" k="24" />
+<hkern u1="&#x3c4;" u2="&#x4d7;" k="24" />
+<hkern u1="&#x3c4;" u2="&#x4af;" k="-11" />
+<hkern u1="&#x3c4;" u2="&#x4ab;" k="24" />
+<hkern u1="&#x3c4;" u2="&#x4a9;" k="24" />
+<hkern u1="&#x3c4;" u2="&#x481;" k="24" />
+<hkern u1="&#x3c4;" u2="&#x47d;" k="24" />
+<hkern u1="&#x3c4;" u2="&#x479;" k="24" />
+<hkern u1="&#x3c4;" u2="&#x477;" k="-11" />
+<hkern u1="&#x3c4;" u2="&#x475;" k="-11" />
+<hkern u1="&#x3c4;" u2="&#x473;" k="22" />
+<hkern u1="&#x3c4;" u2="&#x45e;" k="-11" />
+<hkern u1="&#x3c4;" u2="&#x454;" k="24" />
+<hkern u1="&#x3c4;" u2="&#x451;" k="24" />
+<hkern u1="&#x3c4;" u2="&#x450;" k="24" />
+<hkern u1="&#x3c4;" u2="&#x444;" k="24" />
+<hkern u1="&#x3c4;" u2="&#x443;" k="-11" />
+<hkern u1="&#x3c4;" u2="&#x441;" k="24" />
+<hkern u1="&#x3c4;" u2="&#x43e;" k="22" />
+<hkern u1="&#x3c4;" u2="&#x435;" k="24" />
+<hkern u1="&#x3c4;" u2="&#x3cc;" k="22" />
+<hkern u1="&#x3c4;" u2="&#x3c4;" k="-12" />
+<hkern u1="&#x3c4;" u2="&#x3c3;" k="24" />
+<hkern u1="&#x3c4;" u2="&#x3c2;" k="24" />
+<hkern u1="&#x3c4;" u2="&#x3c0;" k="-11" />
+<hkern u1="&#x3c4;" u2="&#x3bf;" k="22" />
+<hkern u1="&#x3c4;" u2="&#x3bd;" k="-11" />
+<hkern u1="&#x3c4;" u2="&#x3b4;" k="19" />
+<hkern u1="&#x3c4;" u2="&#x3b3;" k="-11" />
+<hkern u1="&#x3c4;" u2="&#x3b1;" k="24" />
+<hkern u1="&#x3c4;" u2="&#x3ac;" k="24" />
+<hkern u1="&#x3c4;" u2="&#x2bc;" k="-12" />
+<hkern u1="&#x3c4;" u2="&#x1a1;" k="24" />
+<hkern u1="&#x3c4;" u2="&#x177;" k="-11" />
+<hkern u1="&#x3c4;" u2="&#x153;" k="24" />
+<hkern u1="&#x3c4;" u2="&#x151;" k="22" />
+<hkern u1="&#x3c4;" u2="&#x14f;" k="22" />
+<hkern u1="&#x3c4;" u2="&#x14d;" k="22" />
+<hkern u1="&#x3c4;" u2="&#x123;" k="24" />
+<hkern u1="&#x3c4;" u2="&#x121;" k="24" />
+<hkern u1="&#x3c4;" u2="&#x11f;" k="24" />
+<hkern u1="&#x3c4;" u2="&#x11d;" k="24" />
+<hkern u1="&#x3c4;" u2="&#x11b;" k="24" />
+<hkern u1="&#x3c4;" u2="&#x119;" k="24" />
+<hkern u1="&#x3c4;" u2="&#x117;" k="24" />
+<hkern u1="&#x3c4;" u2="&#x115;" k="24" />
+<hkern u1="&#x3c4;" u2="&#x113;" k="24" />
+<hkern u1="&#x3c4;" u2="&#x10f;" k="24" />
+<hkern u1="&#x3c4;" u2="&#x10d;" k="24" />
+<hkern u1="&#x3c4;" u2="&#x10b;" k="24" />
+<hkern u1="&#x3c4;" u2="&#x109;" k="24" />
+<hkern u1="&#x3c4;" u2="&#x107;" k="24" />
+<hkern u1="&#x3c4;" u2="&#xff;" k="-11" />
+<hkern u1="&#x3c4;" u2="&#xfd;" k="-11" />
+<hkern u1="&#x3c4;" u2="&#xf6;" k="22" />
+<hkern u1="&#x3c4;" u2="&#xf5;" k="22" />
+<hkern u1="&#x3c4;" u2="&#xf4;" k="22" />
+<hkern u1="&#x3c4;" u2="&#xf3;" k="22" />
+<hkern u1="&#x3c4;" u2="&#xf2;" k="22" />
+<hkern u1="&#x3c4;" u2="&#xeb;" k="24" />
+<hkern u1="&#x3c4;" u2="&#xea;" k="24" />
+<hkern u1="&#x3c4;" u2="&#xe9;" k="24" />
+<hkern u1="&#x3c4;" u2="&#xe8;" k="24" />
+<hkern u1="&#x3c4;" u2="&#xe7;" k="24" />
+<hkern u1="&#x3c4;" u2="y" k="-11" />
+<hkern u1="&#x3c4;" u2="v" k="-11" />
+<hkern u1="&#x3c4;" u2="q" k="24" />
+<hkern u1="&#x3c4;" u2="o" k="22" />
+<hkern u1="&#x3c4;" u2="g" k="24" />
+<hkern u1="&#x3c4;" u2="f" k="-12" />
+<hkern u1="&#x3c4;" u2="e" k="24" />
+<hkern u1="&#x3c4;" u2="d" k="24" />
+<hkern u1="&#x3c4;" u2="c" k="24" />
+<hkern u1="&#x3c4;" u2="&#x27;" k="-12" />
+<hkern u1="&#x3c4;" u2="&#x22;" k="-12" />
+<hkern u1="&#x3c6;" u2="&#x4fd;" k="19" />
+<hkern u1="&#x3c6;" u2="&#x4dd;" k="19" />
+<hkern u1="&#x3c6;" u2="&#x4c2;" k="19" />
+<hkern u1="&#x3c6;" u2="&#x4b3;" k="19" />
+<hkern u1="&#x3c6;" u2="&#x497;" k="19" />
+<hkern u1="&#x3c6;" u2="&#x445;" k="19" />
+<hkern u1="&#x3c6;" u2="&#x436;" k="19" />
+<hkern u1="&#x3c6;" u2="&#x3c7;" k="31" />
+<hkern u1="&#x3c6;" u2="&#x17e;" k="19" />
+<hkern u1="&#x3c6;" u2="&#x17c;" k="19" />
+<hkern u1="&#x3c6;" u2="&#x17a;" k="19" />
+<hkern u1="&#x3c6;" u2="z" k="19" />
+<hkern u1="&#x3c6;" u2="x" k="19" />
+<hkern u1="&#x3c7;" u2="&#x2033;" k="-11" />
+<hkern u1="&#x3c7;" u2="&#x2032;" k="-11" />
+<hkern u1="&#x3c7;" u2="&#x201d;" k="-11" />
+<hkern u1="&#x3c7;" u2="&#x201c;" k="-11" />
+<hkern u1="&#x3c7;" u2="&#x201b;" k="-11" />
+<hkern u1="&#x3c7;" u2="&#x2019;" k="-11" />
+<hkern u1="&#x3c7;" u2="&#x2018;" k="-11" />
+<hkern u1="&#x3c7;" u2="&#x1ee3;" k="21" />
+<hkern u1="&#x3c7;" u2="&#x1ee1;" k="23" />
+<hkern u1="&#x3c7;" u2="&#x1edf;" k="21" />
+<hkern u1="&#x3c7;" u2="&#x1edd;" k="21" />
+<hkern u1="&#x3c7;" u2="&#x1edb;" k="21" />
+<hkern u1="&#x3c7;" u2="&#x1ed9;" k="23" />
+<hkern u1="&#x3c7;" u2="&#x1ed7;" k="23" />
+<hkern u1="&#x3c7;" u2="&#x1ed5;" k="23" />
+<hkern u1="&#x3c7;" u2="&#x1ed3;" k="23" />
+<hkern u1="&#x3c7;" u2="&#x1ed1;" k="23" />
+<hkern u1="&#x3c7;" u2="&#x1ecf;" k="23" />
+<hkern u1="&#x3c7;" u2="&#x1ecd;" k="23" />
+<hkern u1="&#x3c7;" u2="&#x1ec7;" k="21" />
+<hkern u1="&#x3c7;" u2="&#x1ec5;" k="21" />
+<hkern u1="&#x3c7;" u2="&#x1ec3;" k="21" />
+<hkern u1="&#x3c7;" u2="&#x1ec1;" k="21" />
+<hkern u1="&#x3c7;" u2="&#x1ebf;" k="21" />
+<hkern u1="&#x3c7;" u2="&#x1ebd;" k="21" />
+<hkern u1="&#x3c7;" u2="&#x1ebb;" k="21" />
+<hkern u1="&#x3c7;" u2="&#x1eb9;" k="21" />
+<hkern u1="&#x3c7;" u2="&#x50d;" k="21" />
+<hkern u1="&#x3c7;" u2="&#x503;" k="21" />
+<hkern u1="&#x3c7;" u2="&#x502;" k="21" />
+<hkern u1="&#x3c7;" u2="&#x501;" k="21" />
+<hkern u1="&#x3c7;" u2="&#x4eb;" k="23" />
+<hkern u1="&#x3c7;" u2="&#x4e9;" k="21" />
+<hkern u1="&#x3c7;" u2="&#x4e7;" k="23" />
+<hkern u1="&#x3c7;" u2="&#x4db;" k="21" />
+<hkern u1="&#x3c7;" u2="&#x4d9;" k="21" />
+<hkern u1="&#x3c7;" u2="&#x4d7;" k="21" />
+<hkern u1="&#x3c7;" u2="&#x4ab;" k="21" />
+<hkern u1="&#x3c7;" u2="&#x4a9;" k="21" />
+<hkern u1="&#x3c7;" u2="&#x481;" k="21" />
+<hkern u1="&#x3c7;" u2="&#x47d;" k="21" />
+<hkern u1="&#x3c7;" u2="&#x479;" k="21" />
+<hkern u1="&#x3c7;" u2="&#x473;" k="23" />
+<hkern u1="&#x3c7;" u2="&#x454;" k="21" />
+<hkern u1="&#x3c7;" u2="&#x451;" k="21" />
+<hkern u1="&#x3c7;" u2="&#x450;" k="21" />
+<hkern u1="&#x3c7;" u2="&#x444;" k="21" />
+<hkern u1="&#x3c7;" u2="&#x441;" k="21" />
+<hkern u1="&#x3c7;" u2="&#x43e;" k="23" />
+<hkern u1="&#x3c7;" u2="&#x435;" k="21" />
+<hkern u1="&#x3c7;" u2="&#x3cc;" k="23" />
+<hkern u1="&#x3c7;" u2="&#x3c9;" k="17" />
+<hkern u1="&#x3c7;" u2="&#x3c7;" k="-15" />
+<hkern u1="&#x3c7;" u2="&#x3c6;" k="15" />
+<hkern u1="&#x3c7;" u2="&#x3c3;" k="21" />
+<hkern u1="&#x3c7;" u2="&#x3c2;" k="21" />
+<hkern u1="&#x3c7;" u2="&#x3bf;" k="23" />
+<hkern u1="&#x3c7;" u2="&#x3b5;" k="14" />
+<hkern u1="&#x3c7;" u2="&#x3b4;" k="18" />
+<hkern u1="&#x3c7;" u2="&#x3b1;" k="21" />
+<hkern u1="&#x3c7;" u2="&#x3ac;" k="21" />
+<hkern u1="&#x3c7;" u2="&#x2bc;" k="-11" />
+<hkern u1="&#x3c7;" u2="&#x1a1;" k="21" />
+<hkern u1="&#x3c7;" u2="&#x153;" k="21" />
+<hkern u1="&#x3c7;" u2="&#x151;" k="23" />
+<hkern u1="&#x3c7;" u2="&#x14f;" k="23" />
+<hkern u1="&#x3c7;" u2="&#x14d;" k="23" />
+<hkern u1="&#x3c7;" u2="&#x123;" k="21" />
+<hkern u1="&#x3c7;" u2="&#x121;" k="21" />
+<hkern u1="&#x3c7;" u2="&#x11f;" k="21" />
+<hkern u1="&#x3c7;" u2="&#x11d;" k="21" />
+<hkern u1="&#x3c7;" u2="&#x11b;" k="21" />
+<hkern u1="&#x3c7;" u2="&#x119;" k="21" />
+<hkern u1="&#x3c7;" u2="&#x117;" k="21" />
+<hkern u1="&#x3c7;" u2="&#x115;" k="21" />
+<hkern u1="&#x3c7;" u2="&#x113;" k="21" />
+<hkern u1="&#x3c7;" u2="&#x10f;" k="21" />
+<hkern u1="&#x3c7;" u2="&#x10d;" k="21" />
+<hkern u1="&#x3c7;" u2="&#x10b;" k="21" />
+<hkern u1="&#x3c7;" u2="&#x109;" k="21" />
+<hkern u1="&#x3c7;" u2="&#x107;" k="21" />
+<hkern u1="&#x3c7;" u2="&#xf6;" k="23" />
+<hkern u1="&#x3c7;" u2="&#xf5;" k="23" />
+<hkern u1="&#x3c7;" u2="&#xf4;" k="23" />
+<hkern u1="&#x3c7;" u2="&#xf3;" k="23" />
+<hkern u1="&#x3c7;" u2="&#xf2;" k="23" />
+<hkern u1="&#x3c7;" u2="&#xeb;" k="21" />
+<hkern u1="&#x3c7;" u2="&#xea;" k="21" />
+<hkern u1="&#x3c7;" u2="&#xe9;" k="21" />
+<hkern u1="&#x3c7;" u2="&#xe8;" k="21" />
+<hkern u1="&#x3c7;" u2="&#xe7;" k="21" />
+<hkern u1="&#x3c7;" u2="q" k="21" />
+<hkern u1="&#x3c7;" u2="o" k="23" />
+<hkern u1="&#x3c7;" u2="g" k="21" />
+<hkern u1="&#x3c7;" u2="f" k="-11" />
+<hkern u1="&#x3c7;" u2="e" k="21" />
+<hkern u1="&#x3c7;" u2="d" k="21" />
+<hkern u1="&#x3c7;" u2="c" k="21" />
+<hkern u1="&#x3c7;" u2="&#x27;" k="-11" />
+<hkern u1="&#x3c7;" u2="&#x22;" k="-11" />
+<hkern u1="&#x3c8;" u2="&#x4fd;" k="14" />
+<hkern u1="&#x3c8;" u2="&#x4dd;" k="14" />
+<hkern u1="&#x3c8;" u2="&#x4c2;" k="14" />
+<hkern u1="&#x3c8;" u2="&#x4b3;" k="14" />
+<hkern u1="&#x3c8;" u2="&#x497;" k="14" />
+<hkern u1="&#x3c8;" u2="&#x445;" k="14" />
+<hkern u1="&#x3c8;" u2="&#x436;" k="14" />
+<hkern u1="&#x3c8;" u2="&#x17e;" k="14" />
+<hkern u1="&#x3c8;" u2="&#x17c;" k="14" />
+<hkern u1="&#x3c8;" u2="&#x17a;" k="14" />
+<hkern u1="&#x3c8;" u2="z" k="14" />
+<hkern u1="&#x3c8;" u2="x" k="14" />
+<hkern u1="&#x3c9;" u2="&#x1ef9;" k="12" />
+<hkern u1="&#x3c9;" u2="&#x1ef7;" k="12" />
+<hkern u1="&#x3c9;" u2="&#x1ef5;" k="12" />
+<hkern u1="&#x3c9;" u2="&#x1ef3;" k="12" />
+<hkern u1="&#x3c9;" u2="&#x4fd;" k="14" />
+<hkern u1="&#x3c9;" u2="&#x4f3;" k="12" />
+<hkern u1="&#x3c9;" u2="&#x4f1;" k="12" />
+<hkern u1="&#x3c9;" u2="&#x4ef;" k="12" />
+<hkern u1="&#x3c9;" u2="&#x4dd;" k="14" />
+<hkern u1="&#x3c9;" u2="&#x4c2;" k="14" />
+<hkern u1="&#x3c9;" u2="&#x4b3;" k="14" />
+<hkern u1="&#x3c9;" u2="&#x4af;" k="12" />
+<hkern u1="&#x3c9;" u2="&#x497;" k="14" />
+<hkern u1="&#x3c9;" u2="&#x477;" k="12" />
+<hkern u1="&#x3c9;" u2="&#x475;" k="12" />
+<hkern u1="&#x3c9;" u2="&#x45e;" k="12" />
+<hkern u1="&#x3c9;" u2="&#x445;" k="14" />
+<hkern u1="&#x3c9;" u2="&#x443;" k="12" />
+<hkern u1="&#x3c9;" u2="&#x436;" k="14" />
+<hkern u1="&#x3c9;" u2="&#x3bd;" k="12" />
+<hkern u1="&#x3c9;" u2="&#x3b3;" k="12" />
+<hkern u1="&#x3c9;" u2="&#x17e;" k="13" />
+<hkern u1="&#x3c9;" u2="&#x17c;" k="13" />
+<hkern u1="&#x3c9;" u2="&#x17a;" k="13" />
+<hkern u1="&#x3c9;" u2="&#x177;" k="12" />
+<hkern u1="&#x3c9;" u2="&#xff;" k="12" />
+<hkern u1="&#x3c9;" u2="&#xfd;" k="12" />
+<hkern u1="&#x3c9;" u2="z" k="13" />
+<hkern u1="&#x3c9;" u2="y" k="12" />
+<hkern u1="&#x3c9;" u2="x" k="14" />
+<hkern u1="&#x3c9;" u2="v" k="12" />
+<hkern u1="&#x3cc;" u2="&#x50f;" k="20" />
+<hkern u1="&#x3cc;" u2="&#x505;" k="11" />
+<hkern u1="&#x3cc;" u2="&#x4a1;" k="21" />
+<hkern u1="&#x3cc;" u2="&#x47f;" k="15" />
+<hkern u1="&#x3cc;" u2="&#x461;" k="16" />
+<hkern u1="&#x3cc;" u2="&#x442;" k="22" />
+<hkern u1="&#x3cc;" u2="&#x3c7;" k="22" />
+<hkern u1="&#x3cc;" u2="&#x3c4;" k="22" />
+<hkern u1="&#x400;" g2="V.smcp" k="16" />
+<hkern u1="&#x400;" g2="W.smcp" k="19" />
+<hkern u1="&#x400;" g2="Y.smcp" k="16" />
+<hkern u1="&#x400;" u2="w" k="22" />
+<hkern u1="&#x400;" u2="f" k="18" />
+<hkern u1="&#x401;" g2="V.smcp" k="16" />
+<hkern u1="&#x401;" g2="W.smcp" k="19" />
+<hkern u1="&#x401;" g2="Y.smcp" k="16" />
+<hkern u1="&#x401;" u2="w" k="22" />
+<hkern u1="&#x401;" u2="f" k="18" />
+<hkern u1="&#x402;" u2="&#x2033;" k="54" />
+<hkern u1="&#x402;" u2="&#x2032;" k="54" />
+<hkern u1="&#x402;" u2="&#x201d;" k="54" />
+<hkern u1="&#x402;" u2="&#x201c;" k="54" />
+<hkern u1="&#x402;" u2="&#x201b;" k="54" />
+<hkern u1="&#x402;" u2="&#x2019;" k="54" />
+<hkern u1="&#x402;" u2="&#x2018;" k="54" />
+<hkern u1="&#x402;" u2="&#x1ef9;" k="26" />
+<hkern u1="&#x402;" u2="&#x1ef8;" k="45" />
+<hkern u1="&#x402;" u2="&#x1ef7;" k="26" />
+<hkern u1="&#x402;" u2="&#x1ef6;" k="45" />
+<hkern u1="&#x402;" u2="&#x1ef5;" k="26" />
+<hkern u1="&#x402;" u2="&#x1ef4;" k="45" />
+<hkern u1="&#x402;" u2="&#x1ef3;" k="26" />
+<hkern u1="&#x402;" u2="&#x1ef2;" k="45" />
+<hkern u1="&#x402;" u2="&#x50f;" k="55" />
+<hkern u1="&#x402;" u2="&#x50e;" k="153" />
+<hkern u1="&#x402;" u2="&#x506;" k="25" />
+<hkern u1="&#x402;" u2="&#x505;" k="11" />
+<hkern u1="&#x402;" u2="&#x504;" k="44" />
+<hkern u1="&#x402;" u2="&#x4fd;" k="17" />
+<hkern u1="&#x402;" u2="&#x4fc;" k="12" />
+<hkern u1="&#x402;" u2="&#x4f4;" k="31" />
+<hkern u1="&#x402;" u2="&#x4f3;" k="26" />
+<hkern u1="&#x402;" u2="&#x4f2;" k="19" />
+<hkern u1="&#x402;" u2="&#x4f1;" k="26" />
+<hkern u1="&#x402;" u2="&#x4f0;" k="19" />
+<hkern u1="&#x402;" u2="&#x4ef;" k="26" />
+<hkern u1="&#x402;" u2="&#x4ee;" k="19" />
+<hkern u1="&#x402;" u2="&#x4dd;" k="17" />
+<hkern u1="&#x402;" u2="&#x4dc;" k="12" />
+<hkern u1="&#x402;" u2="&#x4cb;" k="31" />
+<hkern u1="&#x402;" u2="&#x4c2;" k="17" />
+<hkern u1="&#x402;" u2="&#x4c1;" k="12" />
+<hkern u1="&#x402;" u2="&#x4b8;" k="31" />
+<hkern u1="&#x402;" u2="&#x4b6;" k="31" />
+<hkern u1="&#x402;" u2="&#x4b4;" k="46" />
+<hkern u1="&#x402;" u2="&#x4b3;" k="17" />
+<hkern u1="&#x402;" u2="&#x4b2;" k="12" />
+<hkern u1="&#x402;" u2="&#x4b0;" k="45" />
+<hkern u1="&#x402;" u2="&#x4af;" k="26" />
+<hkern u1="&#x402;" u2="&#x4ae;" k="45" />
+<hkern u1="&#x402;" u2="&#x4ac;" k="46" />
+<hkern u1="&#x402;" u2="&#x4a1;" k="60" />
+<hkern u1="&#x402;" u2="&#x4a0;" k="46" />
+<hkern u1="&#x402;" u2="&#x497;" k="17" />
+<hkern u1="&#x402;" u2="&#x496;" k="12" />
+<hkern u1="&#x402;" u2="&#x47f;" k="29" />
+<hkern u1="&#x402;" u2="&#x477;" k="26" />
+<hkern u1="&#x402;" u2="&#x476;" k="44" />
+<hkern u1="&#x402;" u2="&#x475;" k="26" />
+<hkern u1="&#x402;" u2="&#x474;" k="44" />
+<hkern u1="&#x402;" u2="&#x461;" k="27" />
+<hkern u1="&#x402;" u2="&#x45e;" k="26" />
+<hkern u1="&#x402;" u2="&#x445;" k="17" />
+<hkern u1="&#x402;" u2="&#x443;" k="26" />
+<hkern u1="&#x402;" u2="&#x442;" k="55" />
+<hkern u1="&#x402;" u2="&#x436;" k="17" />
+<hkern u1="&#x402;" u2="&#x42c;" k="44" />
+<hkern u1="&#x402;" u2="&#x427;" k="31" />
+<hkern u1="&#x402;" u2="&#x425;" k="12" />
+<hkern u1="&#x402;" u2="&#x423;" k="19" />
+<hkern u1="&#x402;" u2="&#x422;" k="46" />
+<hkern u1="&#x402;" u2="&#x416;" k="12" />
+<hkern u1="&#x402;" u2="&#x40e;" k="19" />
+<hkern u1="&#x402;" u2="&#x40b;" k="46" />
+<hkern u1="&#x402;" u2="&#x402;" k="46" />
+<hkern u1="&#x402;" u2="&#x3bd;" k="26" />
+<hkern u1="&#x402;" u2="&#x3b3;" k="26" />
+<hkern u1="&#x402;" u2="&#x3ab;" k="45" />
+<hkern u1="&#x402;" u2="&#x3a7;" k="12" />
+<hkern u1="&#x402;" u2="&#x3a5;" k="45" />
+<hkern u1="&#x402;" u2="&#x38e;" k="45" />
+<hkern u1="&#x402;" u2="&#x2bc;" k="54" />
+<hkern u1="&#x402;" u2="&#x178;" k="45" />
+<hkern u1="&#x402;" u2="&#x177;" k="26" />
+<hkern u1="&#x402;" u2="&#x176;" k="45" />
+<hkern u1="&#x402;" u2="&#x164;" k="46" />
+<hkern u1="&#x402;" u2="&#x162;" k="46" />
+<hkern u1="&#x402;" u2="&#xff;" k="26" />
+<hkern u1="&#x402;" u2="&#xfd;" k="26" />
+<hkern u1="&#x402;" u2="&#xdd;" k="45" />
+<hkern u1="&#x402;" u2="y" k="26" />
+<hkern u1="&#x402;" u2="x" k="17" />
+<hkern u1="&#x402;" u2="v" k="26" />
+<hkern u1="&#x402;" u2="Y" k="45" />
+<hkern u1="&#x402;" u2="X" k="12" />
+<hkern u1="&#x402;" u2="V" k="44" />
+<hkern u1="&#x402;" u2="T" k="46" />
+<hkern u1="&#x402;" u2="&#x27;" k="54" />
+<hkern u1="&#x402;" u2="&#x22;" k="54" />
+<hkern u1="&#x403;" u2="&#x510;" k="43" />
+<hkern u1="&#x403;" u2="&#x50f;" k="208" />
+<hkern u1="&#x403;" u2="&#x50e;" k="-5" />
+<hkern u1="&#x403;" u2="&#x50b;" k="246" />
+<hkern u1="&#x403;" u2="&#x507;" k="161" />
+<hkern u1="&#x403;" u2="&#x505;" k="207" />
+<hkern u1="&#x403;" u2="&#x500;" k="273" />
+<hkern u1="&#x403;" u2="&#x4d8;" k="64" />
+<hkern u1="&#x403;" u2="&#x4bd;" k="271" />
+<hkern u1="&#x403;" u2="&#x4bc;" k="193" />
+<hkern u1="&#x403;" u2="&#x4bb;" k="244" />
+<hkern u1="&#x403;" u2="&#x4b9;" k="244" />
+<hkern u1="&#x403;" u2="&#x4a7;" k="183" />
+<hkern u1="&#x403;" u2="&#x4a1;" k="150" />
+<hkern u1="&#x403;" u2="&#x49d;" k="242" />
+<hkern u1="&#x403;" u2="&#x491;" k="196" />
+<hkern u1="&#x403;" u2="&#x48f;" k="235" />
+<hkern u1="&#x403;" u2="&#x47f;" k="84" />
+<hkern u1="&#x403;" u2="&#x47b;" k="279" />
+<hkern u1="&#x403;" u2="&#x461;" k="239" />
+<hkern u1="&#x403;" u2="&#x45f;" k="242" />
+<hkern u1="&#x403;" u2="&#x44f;" k="249" />
+<hkern u1="&#x403;" u2="&#x44d;" k="237" />
+<hkern u1="&#x403;" u2="&#x44b;" k="242" />
+<hkern u1="&#x403;" u2="&#x442;" k="152" />
+<hkern u1="&#x403;" u2="&#x437;" k="237" />
+<hkern u1="&#x403;" u2="&#x434;" k="258" />
+<hkern u1="&#x403;" u2="&#x432;" k="183" />
+<hkern u1="&#x403;" u2="&#x431;" k="67" />
+<hkern u1="&#x403;" u2="&#x42c;" k="-5" />
+<hkern u1="&#x403;" u2="&#x414;" k="157" />
+<hkern u1="&#x403;" u2="&#x3c9;" k="245" />
+<hkern u1="&#x403;" u2="&#x3c8;" k="242" />
+<hkern u1="&#x403;" u2="&#x3c7;" k="150" />
+<hkern u1="&#x403;" u2="&#x3c6;" k="241" />
+<hkern u1="&#x403;" u2="&#x3c4;" k="152" />
+<hkern u1="&#x403;" u2="&#x3c1;" k="249" />
+<hkern u1="&#x403;" u2="&#x3c0;" k="191" />
+<hkern u1="&#x403;" u2="&#x3b9;" k="246" />
+<hkern u1="&#x403;" u2="&#x3b5;" k="241" />
+<hkern u1="&#x403;" u2="&#x3b4;" k="46" />
+<hkern u1="&#x403;" u2="&#x3a6;" k="142" />
+<hkern u1="&#x403;" u2="&#xf8;" k="181" />
+<hkern u1="&#x403;" u2="&#xe6;" k="163" />
+<hkern u1="&#x403;" u2="&#xc6;" k="340" />
+<hkern u1="&#x403;" u2="&#xbb;" k="270" />
+<hkern u1="&#x403;" u2="&#xab;" k="277" />
+<hkern u1="&#x403;" u2="w" k="99" />
+<hkern u1="&#x403;" u2="r" k="130" />
+<hkern u1="&#x406;" u2="&#x50e;" k="28" />
+<hkern u1="&#x406;" u2="&#x506;" k="30" />
+<hkern u1="&#x406;" u2="&#x504;" k="29" />
+<hkern u1="&#x406;" u2="&#x4bc;" k="28" />
+<hkern u1="&#x406;" u2="&#x4b9;" k="27" />
+<hkern u1="&#x406;" u2="&#x4b8;" k="28" />
+<hkern u1="&#x406;" u2="&#x434;" k="-21" />
+<hkern u1="&#x406;" u2="&#x414;" k="-21" />
+<hkern u1="&#x407;" u2="&#x50e;" k="28" />
+<hkern u1="&#x407;" u2="&#x506;" k="30" />
+<hkern u1="&#x407;" u2="&#x504;" k="29" />
+<hkern u1="&#x407;" u2="&#x4bc;" k="28" />
+<hkern u1="&#x407;" u2="&#x4b9;" k="27" />
+<hkern u1="&#x407;" u2="&#x4b8;" k="28" />
+<hkern u1="&#x407;" u2="&#x434;" k="-21" />
+<hkern u1="&#x407;" u2="&#x414;" k="-21" />
+<hkern u1="&#x409;" u2="&#x50f;" k="47" />
+<hkern u1="&#x409;" u2="&#x50e;" k="96" />
+<hkern u1="&#x409;" u2="&#x506;" k="20" />
+<hkern u1="&#x409;" u2="&#x504;" k="47" />
+<hkern u1="&#x409;" u2="&#x4bc;" k="33" />
+<hkern u1="&#x409;" u2="&#x4b8;" k="25" />
+<hkern u1="&#x409;" u2="&#x4a1;" k="50" />
+<hkern u1="&#x409;" u2="&#x442;" k="49" />
+<hkern u1="&#x409;" u2="&#x42c;" k="61" />
+<hkern u1="&#x40a;" u2="&#x50f;" k="47" />
+<hkern u1="&#x40a;" u2="&#x50e;" k="96" />
+<hkern u1="&#x40a;" u2="&#x506;" k="20" />
+<hkern u1="&#x40a;" u2="&#x504;" k="47" />
+<hkern u1="&#x40a;" u2="&#x4bc;" k="33" />
+<hkern u1="&#x40a;" u2="&#x4b8;" k="25" />
+<hkern u1="&#x40a;" u2="&#x4a1;" k="50" />
+<hkern u1="&#x40a;" u2="&#x442;" k="49" />
+<hkern u1="&#x40a;" u2="&#x42c;" k="61" />
+<hkern u1="&#x40b;" u2="&#x1ef9;" k="17" />
+<hkern u1="&#x40b;" u2="&#x1ef7;" k="17" />
+<hkern u1="&#x40b;" u2="&#x1ef5;" k="17" />
+<hkern u1="&#x40b;" u2="&#x1ef3;" k="17" />
+<hkern u1="&#x40b;" u2="&#x50f;" k="32" />
+<hkern u1="&#x40b;" u2="&#x505;" k="11" />
+<hkern u1="&#x40b;" u2="&#x4f3;" k="17" />
+<hkern u1="&#x40b;" u2="&#x4f1;" k="17" />
+<hkern u1="&#x40b;" u2="&#x4ef;" k="17" />
+<hkern u1="&#x40b;" u2="&#x4bc;" k="23" />
+<hkern u1="&#x40b;" u2="&#x4b4;" k="66" />
+<hkern u1="&#x40b;" u2="&#x4af;" k="17" />
+<hkern u1="&#x40b;" u2="&#x4ac;" k="66" />
+<hkern u1="&#x40b;" u2="&#x4a1;" k="33" />
+<hkern u1="&#x40b;" u2="&#x4a0;" k="66" />
+<hkern u1="&#x40b;" u2="&#x47f;" k="21" />
+<hkern u1="&#x40b;" u2="&#x477;" k="17" />
+<hkern u1="&#x40b;" u2="&#x475;" k="17" />
+<hkern u1="&#x40b;" u2="&#x461;" k="19" />
+<hkern u1="&#x40b;" u2="&#x45e;" k="17" />
+<hkern u1="&#x40b;" u2="&#x443;" k="17" />
+<hkern u1="&#x40b;" u2="&#x442;" k="33" />
+<hkern u1="&#x40b;" u2="&#x42c;" k="55" />
+<hkern u1="&#x40b;" u2="&#x422;" k="66" />
+<hkern u1="&#x40b;" u2="&#x40b;" k="66" />
+<hkern u1="&#x40b;" u2="&#x402;" k="66" />
+<hkern u1="&#x40b;" u2="&#x3bd;" k="17" />
+<hkern u1="&#x40b;" u2="&#x3b3;" k="17" />
+<hkern u1="&#x40b;" u2="&#x177;" k="17" />
+<hkern u1="&#x40b;" u2="&#x164;" k="66" />
+<hkern u1="&#x40b;" u2="&#x162;" k="66" />
+<hkern u1="&#x40b;" u2="&#xff;" k="17" />
+<hkern u1="&#x40b;" u2="&#xfd;" k="17" />
+<hkern u1="&#x40b;" u2="y" k="17" />
+<hkern u1="&#x40b;" u2="v" k="17" />
+<hkern u1="&#x40b;" u2="T" k="66" />
+<hkern u1="&#x40c;" g2="Q.smcp" k="25" />
+<hkern u1="&#x40c;" u2="&#x510;" k="17" />
+<hkern u1="&#x40c;" u2="&#x50f;" k="53" />
+<hkern u1="&#x40c;" u2="&#x507;" k="52" />
+<hkern u1="&#x40c;" u2="&#x505;" k="52" />
+<hkern u1="&#x40c;" u2="&#x4d8;" k="28" />
+<hkern u1="&#x40c;" u2="&#x4b9;" k="59" />
+<hkern u1="&#x40c;" u2="&#x4a1;" k="96" />
+<hkern u1="&#x40c;" u2="&#x47f;" k="56" />
+<hkern u1="&#x40c;" u2="&#x47b;" k="46" />
+<hkern u1="&#x40c;" u2="&#x461;" k="78" />
+<hkern u1="&#x40c;" u2="&#x442;" k="71" />
+<hkern u1="&#x40c;" u2="&#x431;" k="41" />
+<hkern u1="&#x40c;" u2="&#x3c4;" k="76" />
+<hkern u1="&#x40c;" u2="&#x3a6;" k="59" />
+<hkern u1="&#x40c;" u2="w" k="63" />
+<hkern u1="&#x40e;" u2="&#x50e;" k="-17" />
+<hkern u1="&#x40e;" u2="&#x50b;" k="33" />
+<hkern u1="&#x40e;" u2="&#x500;" k="67" />
+<hkern u1="&#x40e;" u2="&#x4bd;" k="38" />
+<hkern u1="&#x40e;" u2="&#x4bb;" k="34" />
+<hkern u1="&#x40e;" u2="&#x4b9;" k="23" />
+<hkern u1="&#x40e;" u2="&#x4a7;" k="32" />
+<hkern u1="&#x40e;" u2="&#x49d;" k="32" />
+<hkern u1="&#x40e;" u2="&#x491;" k="30" />
+<hkern u1="&#x40e;" u2="&#x48f;" k="35" />
+<hkern u1="&#x40e;" u2="&#x47b;" k="50" />
+<hkern u1="&#x40e;" u2="&#x45f;" k="32" />
+<hkern u1="&#x40e;" u2="&#x44f;" k="46" />
+<hkern u1="&#x40e;" u2="&#x44b;" k="33" />
+<hkern u1="&#x40e;" u2="&#x437;" k="42" />
+<hkern u1="&#x40e;" u2="&#x434;" k="83" />
+<hkern u1="&#x40e;" u2="&#x432;" k="32" />
+<hkern u1="&#x40e;" u2="&#x42c;" k="-18" />
+<hkern u1="&#x40e;" u2="&#x414;" k="82" />
+<hkern u1="&#x40f;" u2="&#x50e;" k="28" />
+<hkern u1="&#x40f;" u2="&#x506;" k="30" />
+<hkern u1="&#x40f;" u2="&#x504;" k="29" />
+<hkern u1="&#x40f;" u2="&#x4bc;" k="28" />
+<hkern u1="&#x40f;" u2="&#x4b9;" k="27" />
+<hkern u1="&#x40f;" u2="&#x4b8;" k="28" />
+<hkern u1="&#x40f;" u2="&#x434;" k="-21" />
+<hkern u1="&#x40f;" u2="&#x414;" k="-21" />
+<hkern u1="&#x410;" g2="T.smcp" k="57" />
+<hkern u1="&#x410;" g2="U.smcp" k="15" />
+<hkern u1="&#x410;" g2="V.smcp" k="51" />
+<hkern u1="&#x410;" g2="W.smcp" k="35" />
+<hkern u1="&#x410;" g2="Y.smcp" k="60" />
+<hkern u1="&#x410;" u2="&#x50f;" k="57" />
+<hkern u1="&#x410;" u2="&#x50e;" k="88" />
+<hkern u1="&#x410;" u2="&#x506;" k="54" />
+<hkern u1="&#x410;" u2="&#x504;" k="80" />
+<hkern u1="&#x410;" u2="&#x4d8;" k="14" />
+<hkern u1="&#x410;" u2="&#x4bd;" k="35" />
+<hkern u1="&#x410;" u2="&#x4bc;" k="152" />
+<hkern u1="&#x410;" u2="&#x4b9;" k="123" />
+<hkern u1="&#x410;" u2="&#x4b8;" k="155" />
+<hkern u1="&#x410;" u2="&#x4a1;" k="126" />
+<hkern u1="&#x410;" u2="&#x442;" k="54" />
+<hkern u1="&#x410;" u2="&#x42c;" k="59" />
+<hkern u1="&#x410;" u2="&#x414;" k="-19" />
+<hkern u1="&#x410;" u2="&#x3c4;" k="56" />
+<hkern u1="&#x410;" u2="&#x3bb;" k="-17" />
+<hkern u1="&#x410;" u2="&#x3a8;" k="47" />
+<hkern u1="&#x410;" u2="&#x3a6;" k="27" />
+<hkern u1="&#x410;" u2="&#x1af;" k="18" />
+<hkern u1="&#x410;" u2="w" k="33" />
+<hkern u1="&#x410;" u2="t" k="17" />
+<hkern u1="&#x410;" u2="&#x3f;" k="80" />
+<hkern u1="&#x411;" u2="&#x1ef8;" k="25" />
+<hkern u1="&#x411;" u2="&#x1ef6;" k="25" />
+<hkern u1="&#x411;" u2="&#x1ef4;" k="25" />
+<hkern u1="&#x411;" u2="&#x1ef2;" k="25" />
+<hkern u1="&#x411;" u2="&#x50f;" k="48" />
+<hkern u1="&#x411;" u2="&#x50e;" k="26" />
+<hkern u1="&#x411;" u2="&#x506;" k="19" />
+<hkern u1="&#x411;" u2="&#x504;" k="25" />
+<hkern u1="&#x411;" u2="&#x4fd;" k="15" />
+<hkern u1="&#x411;" u2="&#x4fc;" k="14" />
+<hkern u1="&#x411;" u2="&#x4f4;" k="24" />
+<hkern u1="&#x411;" u2="&#x4f2;" k="18" />
+<hkern u1="&#x411;" u2="&#x4f0;" k="18" />
+<hkern u1="&#x411;" u2="&#x4ee;" k="18" />
+<hkern u1="&#x411;" u2="&#x4dd;" k="15" />
+<hkern u1="&#x411;" u2="&#x4dc;" k="14" />
+<hkern u1="&#x411;" u2="&#x4cb;" k="24" />
+<hkern u1="&#x411;" u2="&#x4c2;" k="15" />
+<hkern u1="&#x411;" u2="&#x4c1;" k="14" />
+<hkern u1="&#x411;" u2="&#x4b8;" k="24" />
+<hkern u1="&#x411;" u2="&#x4b6;" k="24" />
+<hkern u1="&#x411;" u2="&#x4b4;" k="26" />
+<hkern u1="&#x411;" u2="&#x4b3;" k="15" />
+<hkern u1="&#x411;" u2="&#x4b2;" k="14" />
+<hkern u1="&#x411;" u2="&#x4b0;" k="25" />
+<hkern u1="&#x411;" u2="&#x4ae;" k="25" />
+<hkern u1="&#x411;" u2="&#x4ac;" k="26" />
+<hkern u1="&#x411;" u2="&#x4a1;" k="50" />
+<hkern u1="&#x411;" u2="&#x4a0;" k="26" />
+<hkern u1="&#x411;" u2="&#x497;" k="15" />
+<hkern u1="&#x411;" u2="&#x496;" k="14" />
+<hkern u1="&#x411;" u2="&#x476;" k="25" />
+<hkern u1="&#x411;" u2="&#x474;" k="25" />
+<hkern u1="&#x411;" u2="&#x445;" k="15" />
+<hkern u1="&#x411;" u2="&#x442;" k="48" />
+<hkern u1="&#x411;" u2="&#x436;" k="15" />
+<hkern u1="&#x411;" u2="&#x42c;" k="26" />
+<hkern u1="&#x411;" u2="&#x427;" k="24" />
+<hkern u1="&#x411;" u2="&#x425;" k="14" />
+<hkern u1="&#x411;" u2="&#x423;" k="18" />
+<hkern u1="&#x411;" u2="&#x422;" k="26" />
+<hkern u1="&#x411;" u2="&#x416;" k="14" />
+<hkern u1="&#x411;" u2="&#x40e;" k="18" />
+<hkern u1="&#x411;" u2="&#x40b;" k="26" />
+<hkern u1="&#x411;" u2="&#x402;" k="26" />
+<hkern u1="&#x411;" u2="&#x3ab;" k="25" />
+<hkern u1="&#x411;" u2="&#x3a7;" k="14" />
+<hkern u1="&#x411;" u2="&#x3a5;" k="25" />
+<hkern u1="&#x411;" u2="&#x38e;" k="25" />
+<hkern u1="&#x411;" u2="&#x178;" k="25" />
+<hkern u1="&#x411;" u2="&#x176;" k="25" />
+<hkern u1="&#x411;" u2="&#x164;" k="26" />
+<hkern u1="&#x411;" u2="&#x162;" k="26" />
+<hkern u1="&#x411;" u2="&#xdd;" k="25" />
+<hkern u1="&#x411;" u2="x" k="15" />
+<hkern u1="&#x411;" u2="Y" k="25" />
+<hkern u1="&#x411;" u2="X" k="14" />
+<hkern u1="&#x411;" u2="V" k="25" />
+<hkern u1="&#x411;" u2="T" k="26" />
+<hkern u1="&#x412;" u2="&#x50e;" k="26" />
+<hkern u1="&#x412;" u2="&#x46a;" k="-11" />
+<hkern u1="&#x413;" u2="&#x510;" k="43" />
+<hkern u1="&#x413;" u2="&#x50f;" k="208" />
+<hkern u1="&#x413;" u2="&#x50e;" k="-5" />
+<hkern u1="&#x413;" u2="&#x50b;" k="246" />
+<hkern u1="&#x413;" u2="&#x507;" k="161" />
+<hkern u1="&#x413;" u2="&#x505;" k="207" />
+<hkern u1="&#x413;" u2="&#x500;" k="273" />
+<hkern u1="&#x413;" u2="&#x4d8;" k="64" />
+<hkern u1="&#x413;" u2="&#x4bd;" k="271" />
+<hkern u1="&#x413;" u2="&#x4bc;" k="193" />
+<hkern u1="&#x413;" u2="&#x4bb;" k="244" />
+<hkern u1="&#x413;" u2="&#x4b9;" k="244" />
+<hkern u1="&#x413;" u2="&#x4a7;" k="183" />
+<hkern u1="&#x413;" u2="&#x4a1;" k="150" />
+<hkern u1="&#x413;" u2="&#x49d;" k="242" />
+<hkern u1="&#x413;" u2="&#x491;" k="196" />
+<hkern u1="&#x413;" u2="&#x48f;" k="235" />
+<hkern u1="&#x413;" u2="&#x47f;" k="84" />
+<hkern u1="&#x413;" u2="&#x47b;" k="279" />
+<hkern u1="&#x413;" u2="&#x461;" k="239" />
+<hkern u1="&#x413;" u2="&#x45f;" k="242" />
+<hkern u1="&#x413;" u2="&#x44f;" k="249" />
+<hkern u1="&#x413;" u2="&#x44d;" k="237" />
+<hkern u1="&#x413;" u2="&#x44b;" k="242" />
+<hkern u1="&#x413;" u2="&#x442;" k="152" />
+<hkern u1="&#x413;" u2="&#x437;" k="237" />
+<hkern u1="&#x413;" u2="&#x434;" k="258" />
+<hkern u1="&#x413;" u2="&#x432;" k="183" />
+<hkern u1="&#x413;" u2="&#x431;" k="67" />
+<hkern u1="&#x413;" u2="&#x42c;" k="-5" />
+<hkern u1="&#x413;" u2="&#x414;" k="157" />
+<hkern u1="&#x413;" u2="&#x3c9;" k="245" />
+<hkern u1="&#x413;" u2="&#x3c8;" k="242" />
+<hkern u1="&#x413;" u2="&#x3c7;" k="150" />
+<hkern u1="&#x413;" u2="&#x3c6;" k="241" />
+<hkern u1="&#x413;" u2="&#x3c4;" k="152" />
+<hkern u1="&#x413;" u2="&#x3c1;" k="249" />
+<hkern u1="&#x413;" u2="&#x3c0;" k="191" />
+<hkern u1="&#x413;" u2="&#x3b9;" k="246" />
+<hkern u1="&#x413;" u2="&#x3b5;" k="241" />
+<hkern u1="&#x413;" u2="&#x3b4;" k="46" />
+<hkern u1="&#x413;" u2="&#x3a6;" k="142" />
+<hkern u1="&#x413;" u2="&#xf8;" k="181" />
+<hkern u1="&#x413;" u2="&#xe6;" k="163" />
+<hkern u1="&#x413;" u2="&#xc6;" k="340" />
+<hkern u1="&#x413;" u2="&#xbb;" k="270" />
+<hkern u1="&#x413;" u2="&#xab;" k="277" />
+<hkern u1="&#x413;" u2="w" k="99" />
+<hkern u1="&#x413;" u2="r" k="130" />
+<hkern u1="&#x414;" u2="&#x1f4d;" k="24" />
+<hkern u1="&#x414;" u2="&#x1ef8;" k="33" />
+<hkern u1="&#x414;" u2="&#x1ef6;" k="33" />
+<hkern u1="&#x414;" u2="&#x1ef4;" k="33" />
+<hkern u1="&#x414;" u2="&#x1ef2;" k="33" />
+<hkern u1="&#x414;" u2="&#x1ee2;" k="24" />
+<hkern u1="&#x414;" u2="&#x1ee0;" k="24" />
+<hkern u1="&#x414;" u2="&#x1ede;" k="24" />
+<hkern u1="&#x414;" u2="&#x1edc;" k="24" />
+<hkern u1="&#x414;" u2="&#x1eda;" k="24" />
+<hkern u1="&#x414;" u2="&#x1ed8;" k="24" />
+<hkern u1="&#x414;" u2="&#x1ed6;" k="24" />
+<hkern u1="&#x414;" u2="&#x1ed4;" k="24" />
+<hkern u1="&#x414;" u2="&#x1ed2;" k="24" />
+<hkern u1="&#x414;" u2="&#x1ed0;" k="24" />
+<hkern u1="&#x414;" u2="&#x1ece;" k="24" />
+<hkern u1="&#x414;" u2="&#x1ecc;" k="24" />
+<hkern u1="&#x414;" u2="&#x1eb6;" k="-16" />
+<hkern u1="&#x414;" u2="&#x1eb4;" k="-16" />
+<hkern u1="&#x414;" u2="&#x1eb2;" k="-16" />
+<hkern u1="&#x414;" u2="&#x1eb0;" k="-16" />
+<hkern u1="&#x414;" u2="&#x1eae;" k="-16" />
+<hkern u1="&#x414;" u2="&#x1eac;" k="-16" />
+<hkern u1="&#x414;" u2="&#x1eaa;" k="-16" />
+<hkern u1="&#x414;" u2="&#x1ea8;" k="-16" />
+<hkern u1="&#x414;" u2="&#x1ea6;" k="-16" />
+<hkern u1="&#x414;" u2="&#x1ea4;" k="-16" />
+<hkern u1="&#x414;" u2="&#x1ea2;" k="-16" />
+<hkern u1="&#x414;" u2="&#x1ea0;" k="-16" />
+<hkern u1="&#x414;" u2="&#x1e00;" k="-16" />
+<hkern u1="&#x414;" u2="&#x513;" k="-16" />
+<hkern u1="&#x414;" u2="&#x512;" k="-16" />
+<hkern u1="&#x414;" u2="&#x510;" k="14" />
+<hkern u1="&#x414;" u2="&#x50e;" k="33" />
+<hkern u1="&#x414;" u2="&#x50c;" k="24" />
+<hkern u1="&#x414;" u2="&#x508;" k="-16" />
+<hkern u1="&#x414;" u2="&#x506;" k="34" />
+<hkern u1="&#x414;" u2="&#x504;" k="33" />
+<hkern u1="&#x414;" u2="&#x4f5;" k="32" />
+<hkern u1="&#x414;" u2="&#x4f4;" k="31" />
+<hkern u1="&#x414;" u2="&#x4ea;" k="24" />
+<hkern u1="&#x414;" u2="&#x4e8;" k="24" />
+<hkern u1="&#x414;" u2="&#x4e6;" k="24" />
+<hkern u1="&#x414;" u2="&#x4d8;" k="23" />
+<hkern u1="&#x414;" u2="&#x4d2;" k="-16" />
+<hkern u1="&#x414;" u2="&#x4d0;" k="-16" />
+<hkern u1="&#x414;" u2="&#x4cc;" k="32" />
+<hkern u1="&#x414;" u2="&#x4cb;" k="31" />
+<hkern u1="&#x414;" u2="&#x4c6;" k="-16" />
+<hkern u1="&#x414;" u2="&#x4c5;" k="-16" />
+<hkern u1="&#x414;" u2="&#x4bd;" k="31" />
+<hkern u1="&#x414;" u2="&#x4b9;" k="32" />
+<hkern u1="&#x414;" u2="&#x4b8;" k="31" />
+<hkern u1="&#x414;" u2="&#x4b7;" k="32" />
+<hkern u1="&#x414;" u2="&#x4b6;" k="31" />
+<hkern u1="&#x414;" u2="&#x4b4;" k="32" />
+<hkern u1="&#x414;" u2="&#x4b0;" k="33" />
+<hkern u1="&#x414;" u2="&#x4ae;" k="33" />
+<hkern u1="&#x414;" u2="&#x4ac;" k="32" />
+<hkern u1="&#x414;" u2="&#x4aa;" k="24" />
+<hkern u1="&#x414;" u2="&#x4a8;" k="24" />
+<hkern u1="&#x414;" u2="&#x4a0;" k="32" />
+<hkern u1="&#x414;" u2="&#x480;" k="24" />
+<hkern u1="&#x414;" u2="&#x47e;" k="24" />
+<hkern u1="&#x414;" u2="&#x47c;" k="24" />
+<hkern u1="&#x414;" u2="&#x47a;" k="24" />
+<hkern u1="&#x414;" u2="&#x478;" k="24" />
+<hkern u1="&#x414;" u2="&#x476;" k="32" />
+<hkern u1="&#x414;" u2="&#x474;" k="32" />
+<hkern u1="&#x414;" u2="&#x472;" k="24" />
+<hkern u1="&#x414;" u2="&#x466;" k="-16" />
+<hkern u1="&#x414;" u2="&#x460;" k="24" />
+<hkern u1="&#x414;" u2="&#x459;" k="-16" />
+<hkern u1="&#x414;" u2="&#x447;" k="32" />
+<hkern u1="&#x414;" u2="&#x43b;" k="-16" />
+<hkern u1="&#x414;" u2="&#x434;" k="-19" />
+<hkern u1="&#x414;" u2="&#x42c;" k="32" />
+<hkern u1="&#x414;" u2="&#x427;" k="31" />
+<hkern u1="&#x414;" u2="&#x422;" k="32" />
+<hkern u1="&#x414;" u2="&#x421;" k="24" />
+<hkern u1="&#x414;" u2="&#x41e;" k="24" />
+<hkern u1="&#x414;" u2="&#x41b;" k="-16" />
+<hkern u1="&#x414;" u2="&#x414;" k="-20" />
+<hkern u1="&#x414;" u2="&#x410;" k="-16" />
+<hkern u1="&#x414;" u2="&#x40b;" k="32" />
+<hkern u1="&#x414;" u2="&#x409;" k="-16" />
+<hkern u1="&#x414;" u2="&#x404;" k="24" />
+<hkern u1="&#x414;" u2="&#x402;" k="32" />
+<hkern u1="&#x414;" u2="&#x3ab;" k="33" />
+<hkern u1="&#x414;" u2="&#x3a5;" k="33" />
+<hkern u1="&#x414;" u2="&#x39f;" k="24" />
+<hkern u1="&#x414;" u2="&#x39b;" k="-16" />
+<hkern u1="&#x414;" u2="&#x398;" k="24" />
+<hkern u1="&#x414;" u2="&#x394;" k="-16" />
+<hkern u1="&#x414;" u2="&#x391;" k="-16" />
+<hkern u1="&#x414;" u2="&#x38e;" k="33" />
+<hkern u1="&#x414;" u2="&#x38c;" k="24" />
+<hkern u1="&#x414;" u2="&#x386;" k="-16" />
+<hkern u1="&#x414;" u2="&#x1fe;" k="24" />
+<hkern u1="&#x414;" u2="&#x1fa;" k="-16" />
+<hkern u1="&#x414;" u2="&#x1a0;" k="24" />
+<hkern u1="&#x414;" u2="&#x178;" k="33" />
+<hkern u1="&#x414;" u2="&#x176;" k="33" />
+<hkern u1="&#x414;" u2="&#x164;" k="32" />
+<hkern u1="&#x414;" u2="&#x162;" k="32" />
+<hkern u1="&#x414;" u2="&#x152;" k="24" />
+<hkern u1="&#x414;" u2="&#x150;" k="24" />
+<hkern u1="&#x414;" u2="&#x14e;" k="24" />
+<hkern u1="&#x414;" u2="&#x14c;" k="24" />
+<hkern u1="&#x414;" u2="&#x122;" k="24" />
+<hkern u1="&#x414;" u2="&#x120;" k="24" />
+<hkern u1="&#x414;" u2="&#x11e;" k="24" />
+<hkern u1="&#x414;" u2="&#x11c;" k="24" />
+<hkern u1="&#x414;" u2="&#x10c;" k="24" />
+<hkern u1="&#x414;" u2="&#x10a;" k="24" />
+<hkern u1="&#x414;" u2="&#x108;" k="24" />
+<hkern u1="&#x414;" u2="&#x106;" k="24" />
+<hkern u1="&#x414;" u2="&#x104;" k="-16" />
+<hkern u1="&#x414;" u2="&#x102;" k="-16" />
+<hkern u1="&#x414;" u2="&#x100;" k="-16" />
+<hkern u1="&#x414;" u2="&#xdd;" k="33" />
+<hkern u1="&#x414;" u2="&#xd8;" k="24" />
+<hkern u1="&#x414;" u2="&#xd6;" k="24" />
+<hkern u1="&#x414;" u2="&#xd5;" k="24" />
+<hkern u1="&#x414;" u2="&#xd4;" k="24" />
+<hkern u1="&#x414;" u2="&#xd3;" k="24" />
+<hkern u1="&#x414;" u2="&#xd2;" k="24" />
+<hkern u1="&#x414;" u2="&#xc7;" k="24" />
+<hkern u1="&#x414;" u2="&#xc5;" k="-16" />
+<hkern u1="&#x414;" u2="&#xc4;" k="-16" />
+<hkern u1="&#x414;" u2="&#xc3;" k="-16" />
+<hkern u1="&#x414;" u2="&#xc2;" k="-16" />
+<hkern u1="&#x414;" u2="&#xc1;" k="-16" />
+<hkern u1="&#x414;" u2="&#xc0;" k="-16" />
+<hkern u1="&#x414;" u2="Y" k="33" />
+<hkern u1="&#x414;" u2="V" k="32" />
+<hkern u1="&#x414;" u2="T" k="32" />
+<hkern u1="&#x414;" u2="Q" k="24" />
+<hkern u1="&#x414;" u2="O" k="24" />
+<hkern u1="&#x414;" u2="G" k="24" />
+<hkern u1="&#x414;" u2="C" k="24" />
+<hkern u1="&#x414;" u2="A" k="-16" />
+<hkern u1="&#x415;" g2="V.smcp" k="16" />
+<hkern u1="&#x415;" g2="W.smcp" k="19" />
+<hkern u1="&#x415;" g2="Y.smcp" k="16" />
+<hkern u1="&#x415;" u2="w" k="22" />
+<hkern u1="&#x415;" u2="f" k="18" />
+<hkern u1="&#x416;" g2="Q.smcp" k="23" />
+<hkern u1="&#x416;" u2="&#x510;" k="14" />
+<hkern u1="&#x416;" u2="&#x50f;" k="42" />
+<hkern u1="&#x416;" u2="&#x506;" k="-12" />
+<hkern u1="&#x416;" u2="&#x504;" k="-13" />
+<hkern u1="&#x416;" u2="&#x4d8;" k="25" />
+<hkern u1="&#x416;" u2="&#x4bd;" k="59" />
+<hkern u1="&#x416;" u2="&#x4bc;" k="42" />
+<hkern u1="&#x416;" u2="&#x4b9;" k="45" />
+<hkern u1="&#x416;" u2="&#x4a1;" k="41" />
+<hkern u1="&#x416;" u2="&#x442;" k="41" />
+<hkern u1="&#x416;" u2="&#x431;" k="23" />
+<hkern u1="&#x416;" u2="&#x414;" k="-18" />
+<hkern u1="&#x416;" u2="&#x3c9;" k="18" />
+<hkern u1="&#x416;" u2="&#x3c8;" k="27" />
+<hkern u1="&#x416;" u2="&#x3c6;" k="25" />
+<hkern u1="&#x416;" u2="&#x3c4;" k="32" />
+<hkern u1="&#x416;" u2="&#x3bb;" k="-17" />
+<hkern u1="&#x416;" u2="&#x3b8;" k="19" />
+<hkern u1="&#x416;" u2="&#x3b4;" k="16" />
+<hkern u1="&#x416;" u2="&#x3a6;" k="44" />
+<hkern u1="&#x417;" u2="&#x1ef8;" k="16" />
+<hkern u1="&#x417;" u2="&#x1ef6;" k="16" />
+<hkern u1="&#x417;" u2="&#x1ef4;" k="16" />
+<hkern u1="&#x417;" u2="&#x1ef2;" k="16" />
+<hkern u1="&#x417;" u2="&#x512;" k="11" />
+<hkern u1="&#x417;" u2="&#x50e;" k="14" />
+<hkern u1="&#x417;" u2="&#x508;" k="11" />
+<hkern u1="&#x417;" u2="&#x506;" k="14" />
+<hkern u1="&#x417;" u2="&#x504;" k="14" />
+<hkern u1="&#x417;" u2="&#x4fc;" k="12" />
+<hkern u1="&#x417;" u2="&#x4f2;" k="13" />
+<hkern u1="&#x417;" u2="&#x4f0;" k="13" />
+<hkern u1="&#x417;" u2="&#x4ee;" k="13" />
+<hkern u1="&#x417;" u2="&#x4dc;" k="12" />
+<hkern u1="&#x417;" u2="&#x4c5;" k="11" />
+<hkern u1="&#x417;" u2="&#x4c1;" k="12" />
+<hkern u1="&#x417;" u2="&#x4b4;" k="15" />
+<hkern u1="&#x417;" u2="&#x4b2;" k="12" />
+<hkern u1="&#x417;" u2="&#x4b0;" k="16" />
+<hkern u1="&#x417;" u2="&#x4ae;" k="16" />
+<hkern u1="&#x417;" u2="&#x4ac;" k="15" />
+<hkern u1="&#x417;" u2="&#x4a0;" k="15" />
+<hkern u1="&#x417;" u2="&#x496;" k="12" />
+<hkern u1="&#x417;" u2="&#x476;" k="12" />
+<hkern u1="&#x417;" u2="&#x474;" k="12" />
+<hkern u1="&#x417;" u2="&#x42c;" k="15" />
+<hkern u1="&#x417;" u2="&#x425;" k="12" />
+<hkern u1="&#x417;" u2="&#x423;" k="13" />
+<hkern u1="&#x417;" u2="&#x422;" k="15" />
+<hkern u1="&#x417;" u2="&#x41b;" k="11" />
+<hkern u1="&#x417;" u2="&#x416;" k="12" />
+<hkern u1="&#x417;" u2="&#x40e;" k="13" />
+<hkern u1="&#x417;" u2="&#x40b;" k="15" />
+<hkern u1="&#x417;" u2="&#x409;" k="11" />
+<hkern u1="&#x417;" u2="&#x402;" k="15" />
+<hkern u1="&#x417;" u2="&#x3ab;" k="16" />
+<hkern u1="&#x417;" u2="&#x3a7;" k="12" />
+<hkern u1="&#x417;" u2="&#x3a5;" k="16" />
+<hkern u1="&#x417;" u2="&#x38e;" k="16" />
+<hkern u1="&#x417;" u2="&#x178;" k="16" />
+<hkern u1="&#x417;" u2="&#x176;" k="16" />
+<hkern u1="&#x417;" u2="&#x164;" k="15" />
+<hkern u1="&#x417;" u2="&#x162;" k="15" />
+<hkern u1="&#x417;" u2="&#xdd;" k="16" />
+<hkern u1="&#x417;" u2="Y" k="16" />
+<hkern u1="&#x417;" u2="X" k="12" />
+<hkern u1="&#x417;" u2="V" k="12" />
+<hkern u1="&#x417;" u2="T" k="15" />
+<hkern u1="&#x417;" u2="&#x37;" k="14" />
+<hkern u1="&#x418;" u2="&#x50e;" k="28" />
+<hkern u1="&#x418;" u2="&#x506;" k="30" />
+<hkern u1="&#x418;" u2="&#x504;" k="29" />
+<hkern u1="&#x418;" u2="&#x4bc;" k="28" />
+<hkern u1="&#x418;" u2="&#x4b9;" k="27" />
+<hkern u1="&#x418;" u2="&#x4b8;" k="28" />
+<hkern u1="&#x418;" u2="&#x434;" k="-21" />
+<hkern u1="&#x418;" u2="&#x414;" k="-21" />
+<hkern u1="&#x41a;" g2="Q.smcp" k="25" />
+<hkern u1="&#x41a;" u2="&#x510;" k="17" />
+<hkern u1="&#x41a;" u2="&#x50f;" k="53" />
+<hkern u1="&#x41a;" u2="&#x507;" k="52" />
+<hkern u1="&#x41a;" u2="&#x505;" k="52" />
+<hkern u1="&#x41a;" u2="&#x4d8;" k="28" />
+<hkern u1="&#x41a;" u2="&#x4b9;" k="59" />
+<hkern u1="&#x41a;" u2="&#x4a1;" k="96" />
+<hkern u1="&#x41a;" u2="&#x47f;" k="56" />
+<hkern u1="&#x41a;" u2="&#x47b;" k="46" />
+<hkern u1="&#x41a;" u2="&#x461;" k="78" />
+<hkern u1="&#x41a;" u2="&#x442;" k="71" />
+<hkern u1="&#x41a;" u2="&#x431;" k="41" />
+<hkern u1="&#x41a;" u2="&#x3c4;" k="76" />
+<hkern u1="&#x41a;" u2="&#x3a6;" k="59" />
+<hkern u1="&#x41a;" u2="w" k="63" />
+<hkern u1="&#x41b;" u2="&#x50e;" k="28" />
+<hkern u1="&#x41b;" u2="&#x506;" k="30" />
+<hkern u1="&#x41b;" u2="&#x504;" k="29" />
+<hkern u1="&#x41b;" u2="&#x4bc;" k="28" />
+<hkern u1="&#x41b;" u2="&#x4b9;" k="27" />
+<hkern u1="&#x41b;" u2="&#x4b8;" k="28" />
+<hkern u1="&#x41b;" u2="&#x434;" k="-21" />
+<hkern u1="&#x41b;" u2="&#x414;" k="-21" />
+<hkern u1="&#x41c;" u2="&#x50e;" k="28" />
+<hkern u1="&#x41c;" u2="&#x506;" k="30" />
+<hkern u1="&#x41c;" u2="&#x504;" k="29" />
+<hkern u1="&#x41c;" u2="&#x4bc;" k="28" />
+<hkern u1="&#x41c;" u2="&#x4b9;" k="27" />
+<hkern u1="&#x41c;" u2="&#x4b8;" k="28" />
+<hkern u1="&#x41c;" u2="&#x434;" k="-21" />
+<hkern u1="&#x41c;" u2="&#x414;" k="-21" />
+<hkern u1="&#x41d;" u2="&#x50e;" k="28" />
+<hkern u1="&#x41d;" u2="&#x506;" k="30" />
+<hkern u1="&#x41d;" u2="&#x504;" k="29" />
+<hkern u1="&#x41d;" u2="&#x4bc;" k="28" />
+<hkern u1="&#x41d;" u2="&#x4b9;" k="27" />
+<hkern u1="&#x41d;" u2="&#x4b8;" k="28" />
+<hkern u1="&#x41d;" u2="&#x434;" k="-21" />
+<hkern u1="&#x41d;" u2="&#x414;" k="-21" />
+<hkern u1="&#x41e;" g2="X.smcp" k="11" />
+<hkern u1="&#x41e;" u2="&#x50e;" k="32" />
+<hkern u1="&#x41e;" u2="&#x42c;" k="32" />
+<hkern u1="&#x41e;" u2="&#x414;" k="33" />
+<hkern u1="&#x41e;" u2="&#x3bb;" k="22" />
+<hkern u1="&#x41e;" u2="&#x3a3;" k="16" />
+<hkern u1="&#x41e;" u2="&#x39e;" k="13" />
+<hkern u1="&#x41e;" u2="&#xc6;" k="33" />
+<hkern u1="&#x420;" u2="&#x500;" k="48" />
+<hkern u1="&#x420;" u2="&#x434;" k="171" />
+<hkern u1="&#x420;" u2="&#x414;" k="235" />
+<hkern u1="&#x420;" u2="&#x3c1;" k="56" />
+<hkern u1="&#x420;" u2="&#x3bb;" k="102" />
+<hkern u1="&#x420;" u2="&#x3b4;" k="40" />
+<hkern u1="&#x420;" u2="&#xc6;" k="293" />
+<hkern u1="&#x420;" u2="t" k="-14" />
+<hkern u1="&#x421;" u2="&#x4bd;" k="19" />
+<hkern u1="&#x421;" u2="&#x7d;" k="17" />
+<hkern u1="&#x421;" u2="]" k="12" />
+<hkern u1="&#x421;" u2="&#x29;" k="26" />
+<hkern u1="&#x422;" g2="Q.smcp" k="71" />
+<hkern u1="&#x422;" g2="S.smcp" k="68" />
+<hkern u1="&#x422;" g2="T.smcp" k="15" />
+<hkern u1="&#x422;" g2="W.smcp" k="15" />
+<hkern u1="&#x422;" g2="X.smcp" k="19" />
+<hkern u1="&#x422;" u2="&#x510;" k="14" />
+<hkern u1="&#x422;" u2="&#x50f;" k="111" />
+<hkern u1="&#x422;" u2="&#x50e;" k="-15" />
+<hkern u1="&#x422;" u2="&#x50b;" k="133" />
+<hkern u1="&#x422;" u2="&#x507;" k="83" />
+<hkern u1="&#x422;" u2="&#x505;" k="110" />
+<hkern u1="&#x422;" u2="&#x500;" k="149" />
+<hkern u1="&#x422;" u2="&#x4d8;" k="26" />
+<hkern u1="&#x422;" u2="&#x4bd;" k="148" />
+<hkern u1="&#x422;" u2="&#x4bc;" k="102" />
+<hkern u1="&#x422;" u2="&#x4bb;" k="132" />
+<hkern u1="&#x422;" u2="&#x4b9;" k="132" />
+<hkern u1="&#x422;" u2="&#x4a7;" k="96" />
+<hkern u1="&#x422;" u2="&#x4a1;" k="77" />
+<hkern u1="&#x422;" u2="&#x49d;" k="131" />
+<hkern u1="&#x422;" u2="&#x491;" k="104" />
+<hkern u1="&#x422;" u2="&#x48f;" k="127" />
+<hkern u1="&#x422;" u2="&#x47f;" k="38" />
+<hkern u1="&#x422;" u2="&#x47b;" k="153" />
+<hkern u1="&#x422;" u2="&#x461;" k="129" />
+<hkern u1="&#x422;" u2="&#x45f;" k="131" />
+<hkern u1="&#x422;" u2="&#x44f;" k="135" />
+<hkern u1="&#x422;" u2="&#x44d;" k="128" />
+<hkern u1="&#x422;" u2="&#x44b;" k="131" />
+<hkern u1="&#x422;" u2="&#x442;" k="78" />
+<hkern u1="&#x422;" u2="&#x437;" k="128" />
+<hkern u1="&#x422;" u2="&#x434;" k="140" />
+<hkern u1="&#x422;" u2="&#x432;" k="96" />
+<hkern u1="&#x422;" u2="&#x431;" k="28" />
+<hkern u1="&#x422;" u2="&#x42c;" k="-15" />
+<hkern u1="&#x422;" u2="&#x414;" k="81" />
+<hkern u1="&#x422;" u2="&#x3c9;" k="132" />
+<hkern u1="&#x422;" u2="&#x3c8;" k="131" />
+<hkern u1="&#x422;" u2="&#x3c7;" k="77" />
+<hkern u1="&#x422;" u2="&#x3c6;" k="130" />
+<hkern u1="&#x422;" u2="&#x3c4;" k="78" />
+<hkern u1="&#x422;" u2="&#x3c1;" k="135" />
+<hkern u1="&#x422;" u2="&#x3c0;" k="101" />
+<hkern u1="&#x422;" u2="&#x3b9;" k="133" />
+<hkern u1="&#x422;" u2="&#x3b5;" k="130" />
+<hkern u1="&#x422;" u2="&#x3b4;" k="15" />
+<hkern u1="&#x422;" u2="&#x3a6;" k="72" />
+<hkern u1="&#x422;" u2="&#xf8;" k="95" />
+<hkern u1="&#x422;" u2="&#xe6;" k="84" />
+<hkern u1="&#x422;" u2="&#xc6;" k="188" />
+<hkern u1="&#x422;" u2="&#xbb;" k="147" />
+<hkern u1="&#x422;" u2="&#xab;" k="151" />
+<hkern u1="&#x422;" u2="w" k="47" />
+<hkern u1="&#x422;" u2="r" k="65" />
+<hkern u1="&#x423;" u2="&#x50e;" k="-17" />
+<hkern u1="&#x423;" u2="&#x50b;" k="33" />
+<hkern u1="&#x423;" u2="&#x500;" k="67" />
+<hkern u1="&#x423;" u2="&#x4bd;" k="38" />
+<hkern u1="&#x423;" u2="&#x4bb;" k="34" />
+<hkern u1="&#x423;" u2="&#x4b9;" k="23" />
+<hkern u1="&#x423;" u2="&#x4a7;" k="32" />
+<hkern u1="&#x423;" u2="&#x49d;" k="32" />
+<hkern u1="&#x423;" u2="&#x491;" k="30" />
+<hkern u1="&#x423;" u2="&#x48f;" k="35" />
+<hkern u1="&#x423;" u2="&#x47b;" k="50" />
+<hkern u1="&#x423;" u2="&#x45f;" k="32" />
+<hkern u1="&#x423;" u2="&#x44f;" k="46" />
+<hkern u1="&#x423;" u2="&#x44b;" k="33" />
+<hkern u1="&#x423;" u2="&#x437;" k="42" />
+<hkern u1="&#x423;" u2="&#x434;" k="83" />
+<hkern u1="&#x423;" u2="&#x432;" k="32" />
+<hkern u1="&#x423;" u2="&#x42c;" k="-18" />
+<hkern u1="&#x423;" u2="&#x414;" k="82" />
+<hkern u1="&#x425;" g2="Q.smcp" k="23" />
+<hkern u1="&#x425;" u2="&#x510;" k="14" />
+<hkern u1="&#x425;" u2="&#x50f;" k="42" />
+<hkern u1="&#x425;" u2="&#x506;" k="-12" />
+<hkern u1="&#x425;" u2="&#x504;" k="-13" />
+<hkern u1="&#x425;" u2="&#x4d8;" k="25" />
+<hkern u1="&#x425;" u2="&#x4bd;" k="59" />
+<hkern u1="&#x425;" u2="&#x4bc;" k="42" />
+<hkern u1="&#x425;" u2="&#x4b9;" k="45" />
+<hkern u1="&#x425;" u2="&#x4a1;" k="41" />
+<hkern u1="&#x425;" u2="&#x442;" k="41" />
+<hkern u1="&#x425;" u2="&#x431;" k="23" />
+<hkern u1="&#x425;" u2="&#x414;" k="-18" />
+<hkern u1="&#x425;" u2="&#x3c9;" k="18" />
+<hkern u1="&#x425;" u2="&#x3c8;" k="27" />
+<hkern u1="&#x425;" u2="&#x3c6;" k="25" />
+<hkern u1="&#x425;" u2="&#x3c4;" k="32" />
+<hkern u1="&#x425;" u2="&#x3bb;" k="-17" />
+<hkern u1="&#x425;" u2="&#x3b8;" k="19" />
+<hkern u1="&#x425;" u2="&#x3b4;" k="16" />
+<hkern u1="&#x425;" u2="&#x3a6;" k="44" />
+<hkern u1="&#x426;" u2="&#x50e;" k="28" />
+<hkern u1="&#x426;" u2="&#x506;" k="30" />
+<hkern u1="&#x426;" u2="&#x504;" k="29" />
+<hkern u1="&#x426;" u2="&#x4bc;" k="28" />
+<hkern u1="&#x426;" u2="&#x4b9;" k="27" />
+<hkern u1="&#x426;" u2="&#x4b8;" k="28" />
+<hkern u1="&#x426;" u2="&#x434;" k="-21" />
+<hkern u1="&#x426;" u2="&#x414;" k="-21" />
+<hkern u1="&#x428;" u2="&#x50e;" k="28" />
+<hkern u1="&#x428;" u2="&#x506;" k="30" />
+<hkern u1="&#x428;" u2="&#x504;" k="29" />
+<hkern u1="&#x428;" u2="&#x4bc;" k="28" />
+<hkern u1="&#x428;" u2="&#x4b9;" k="27" />
+<hkern u1="&#x428;" u2="&#x4b8;" k="28" />
+<hkern u1="&#x428;" u2="&#x434;" k="-21" />
+<hkern u1="&#x428;" u2="&#x414;" k="-21" />
+<hkern u1="&#x429;" u2="&#x1ef8;" k="26" />
+<hkern u1="&#x429;" u2="&#x1ef6;" k="26" />
+<hkern u1="&#x429;" u2="&#x1ef4;" k="26" />
+<hkern u1="&#x429;" u2="&#x1ef2;" k="26" />
+<hkern u1="&#x429;" u2="&#x1eb6;" k="-15" />
+<hkern u1="&#x429;" u2="&#x1eb4;" k="-15" />
+<hkern u1="&#x429;" u2="&#x1eb2;" k="-15" />
+<hkern u1="&#x429;" u2="&#x1eb0;" k="-15" />
+<hkern u1="&#x429;" u2="&#x1eae;" k="-15" />
+<hkern u1="&#x429;" u2="&#x1eac;" k="-15" />
+<hkern u1="&#x429;" u2="&#x1eaa;" k="-15" />
+<hkern u1="&#x429;" u2="&#x1ea8;" k="-15" />
+<hkern u1="&#x429;" u2="&#x1ea6;" k="-15" />
+<hkern u1="&#x429;" u2="&#x1ea4;" k="-15" />
+<hkern u1="&#x429;" u2="&#x1ea2;" k="-15" />
+<hkern u1="&#x429;" u2="&#x1ea0;" k="-15" />
+<hkern u1="&#x429;" u2="&#x1e00;" k="-15" />
+<hkern u1="&#x429;" u2="&#x513;" k="-15" />
+<hkern u1="&#x429;" u2="&#x512;" k="-14" />
+<hkern u1="&#x429;" u2="&#x50f;" k="25" />
+<hkern u1="&#x429;" u2="&#x50e;" k="26" />
+<hkern u1="&#x429;" u2="&#x508;" k="-14" />
+<hkern u1="&#x429;" u2="&#x506;" k="26" />
+<hkern u1="&#x429;" u2="&#x504;" k="26" />
+<hkern u1="&#x429;" u2="&#x4fc;" k="-14" />
+<hkern u1="&#x429;" u2="&#x4f5;" k="24" />
+<hkern u1="&#x429;" u2="&#x4f4;" k="27" />
+<hkern u1="&#x429;" u2="&#x4f2;" k="-11" />
+<hkern u1="&#x429;" u2="&#x4f0;" k="-11" />
+<hkern u1="&#x429;" u2="&#x4ee;" k="-11" />
+<hkern u1="&#x429;" u2="&#x4dc;" k="-14" />
+<hkern u1="&#x429;" u2="&#x4d2;" k="-15" />
+<hkern u1="&#x429;" u2="&#x4d0;" k="-15" />
+<hkern u1="&#x429;" u2="&#x4cc;" k="24" />
+<hkern u1="&#x429;" u2="&#x4cb;" k="27" />
+<hkern u1="&#x429;" u2="&#x4c6;" k="-15" />
+<hkern u1="&#x429;" u2="&#x4c5;" k="-14" />
+<hkern u1="&#x429;" u2="&#x4c1;" k="-14" />
+<hkern u1="&#x429;" u2="&#x4b9;" k="24" />
+<hkern u1="&#x429;" u2="&#x4b8;" k="27" />
+<hkern u1="&#x429;" u2="&#x4b7;" k="24" />
+<hkern u1="&#x429;" u2="&#x4b6;" k="27" />
+<hkern u1="&#x429;" u2="&#x4b4;" k="26" />
+<hkern u1="&#x429;" u2="&#x4b2;" k="-14" />
+<hkern u1="&#x429;" u2="&#x4b0;" k="26" />
+<hkern u1="&#x429;" u2="&#x4ae;" k="26" />
+<hkern u1="&#x429;" u2="&#x4ac;" k="26" />
+<hkern u1="&#x429;" u2="&#x4a1;" k="25" />
+<hkern u1="&#x429;" u2="&#x4a0;" k="26" />
+<hkern u1="&#x429;" u2="&#x496;" k="-14" />
+<hkern u1="&#x429;" u2="&#x476;" k="26" />
+<hkern u1="&#x429;" u2="&#x474;" k="26" />
+<hkern u1="&#x429;" u2="&#x466;" k="-15" />
+<hkern u1="&#x429;" u2="&#x459;" k="-15" />
+<hkern u1="&#x429;" u2="&#x447;" k="24" />
+<hkern u1="&#x429;" u2="&#x442;" k="25" />
+<hkern u1="&#x429;" u2="&#x43b;" k="-15" />
+<hkern u1="&#x429;" u2="&#x434;" k="-18" />
+<hkern u1="&#x429;" u2="&#x42d;" k="12" />
+<hkern u1="&#x429;" u2="&#x42c;" k="26" />
+<hkern u1="&#x429;" u2="&#x427;" k="27" />
+<hkern u1="&#x429;" u2="&#x425;" k="-14" />
+<hkern u1="&#x429;" u2="&#x423;" k="-11" />
+<hkern u1="&#x429;" u2="&#x422;" k="26" />
+<hkern u1="&#x429;" u2="&#x41b;" k="-14" />
+<hkern u1="&#x429;" u2="&#x416;" k="-14" />
+<hkern u1="&#x429;" u2="&#x414;" k="-19" />
+<hkern u1="&#x429;" u2="&#x410;" k="-15" />
+<hkern u1="&#x429;" u2="&#x40e;" k="-11" />
+<hkern u1="&#x429;" u2="&#x40b;" k="26" />
+<hkern u1="&#x429;" u2="&#x409;" k="-14" />
+<hkern u1="&#x429;" u2="&#x402;" k="26" />
+<hkern u1="&#x429;" u2="&#x3ab;" k="26" />
+<hkern u1="&#x429;" u2="&#x3a7;" k="-14" />
+<hkern u1="&#x429;" u2="&#x3a5;" k="26" />
+<hkern u1="&#x429;" u2="&#x39b;" k="-15" />
+<hkern u1="&#x429;" u2="&#x394;" k="-15" />
+<hkern u1="&#x429;" u2="&#x391;" k="-15" />
+<hkern u1="&#x429;" u2="&#x38e;" k="26" />
+<hkern u1="&#x429;" u2="&#x386;" k="-15" />
+<hkern u1="&#x429;" u2="&#x1fa;" k="-15" />
+<hkern u1="&#x429;" u2="&#x178;" k="26" />
+<hkern u1="&#x429;" u2="&#x176;" k="26" />
+<hkern u1="&#x429;" u2="&#x164;" k="26" />
+<hkern u1="&#x429;" u2="&#x162;" k="26" />
+<hkern u1="&#x429;" u2="&#x104;" k="-15" />
+<hkern u1="&#x429;" u2="&#x102;" k="-15" />
+<hkern u1="&#x429;" u2="&#x100;" k="-15" />
+<hkern u1="&#x429;" u2="&#xdd;" k="26" />
+<hkern u1="&#x429;" u2="&#xc5;" k="-15" />
+<hkern u1="&#x429;" u2="&#xc4;" k="-15" />
+<hkern u1="&#x429;" u2="&#xc3;" k="-15" />
+<hkern u1="&#x429;" u2="&#xc2;" k="-15" />
+<hkern u1="&#x429;" u2="&#xc1;" k="-15" />
+<hkern u1="&#x429;" u2="&#xc0;" k="-15" />
+<hkern u1="&#x429;" u2="Y" k="26" />
+<hkern u1="&#x429;" u2="X" k="-14" />
+<hkern u1="&#x429;" u2="V" k="26" />
+<hkern u1="&#x429;" u2="T" k="26" />
+<hkern u1="&#x429;" u2="A" k="-15" />
+<hkern u1="&#x42a;" u2="&#x50f;" k="47" />
+<hkern u1="&#x42a;" u2="&#x50e;" k="96" />
+<hkern u1="&#x42a;" u2="&#x506;" k="20" />
+<hkern u1="&#x42a;" u2="&#x504;" k="47" />
+<hkern u1="&#x42a;" u2="&#x4bc;" k="33" />
+<hkern u1="&#x42a;" u2="&#x4b8;" k="25" />
+<hkern u1="&#x42a;" u2="&#x4a1;" k="50" />
+<hkern u1="&#x42a;" u2="&#x442;" k="49" />
+<hkern u1="&#x42a;" u2="&#x42c;" k="61" />
+<hkern u1="&#x42c;" u2="&#x50f;" k="47" />
+<hkern u1="&#x42c;" u2="&#x50e;" k="96" />
+<hkern u1="&#x42c;" u2="&#x506;" k="20" />
+<hkern u1="&#x42c;" u2="&#x504;" k="47" />
+<hkern u1="&#x42c;" u2="&#x4bc;" k="33" />
+<hkern u1="&#x42c;" u2="&#x4b8;" k="25" />
+<hkern u1="&#x42c;" u2="&#x4a1;" k="50" />
+<hkern u1="&#x42c;" u2="&#x442;" k="49" />
+<hkern u1="&#x42c;" u2="&#x42c;" k="61" />
+<hkern u1="&#x42d;" u2="&#x1ef8;" k="28" />
+<hkern u1="&#x42d;" u2="&#x1ef6;" k="28" />
+<hkern u1="&#x42d;" u2="&#x1ef4;" k="28" />
+<hkern u1="&#x42d;" u2="&#x1ef2;" k="28" />
+<hkern u1="&#x42d;" u2="&#x513;" k="22" />
+<hkern u1="&#x42d;" u2="&#x512;" k="27" />
+<hkern u1="&#x42d;" u2="&#x50e;" k="28" />
+<hkern u1="&#x42d;" u2="&#x508;" k="27" />
+<hkern u1="&#x42d;" u2="&#x4fc;" k="27" />
+<hkern u1="&#x42d;" u2="&#x4f2;" k="23" />
+<hkern u1="&#x42d;" u2="&#x4f0;" k="23" />
+<hkern u1="&#x42d;" u2="&#x4ee;" k="23" />
+<hkern u1="&#x42d;" u2="&#x4dc;" k="27" />
+<hkern u1="&#x42d;" u2="&#x4c6;" k="22" />
+<hkern u1="&#x42d;" u2="&#x4c5;" k="27" />
+<hkern u1="&#x42d;" u2="&#x4c1;" k="27" />
+<hkern u1="&#x42d;" u2="&#x4b4;" k="29" />
+<hkern u1="&#x42d;" u2="&#x4b2;" k="27" />
+<hkern u1="&#x42d;" u2="&#x4b0;" k="28" />
+<hkern u1="&#x42d;" u2="&#x4ae;" k="28" />
+<hkern u1="&#x42d;" u2="&#x4ac;" k="29" />
+<hkern u1="&#x42d;" u2="&#x4a0;" k="29" />
+<hkern u1="&#x42d;" u2="&#x496;" k="27" />
+<hkern u1="&#x42d;" u2="&#x459;" k="22" />
+<hkern u1="&#x42d;" u2="&#x43b;" k="22" />
+<hkern u1="&#x42d;" u2="&#x425;" k="27" />
+<hkern u1="&#x42d;" u2="&#x423;" k="23" />
+<hkern u1="&#x42d;" u2="&#x422;" k="29" />
+<hkern u1="&#x42d;" u2="&#x41b;" k="27" />
+<hkern u1="&#x42d;" u2="&#x416;" k="27" />
+<hkern u1="&#x42d;" u2="&#x414;" k="30" />
+<hkern u1="&#x42d;" u2="&#x40e;" k="23" />
+<hkern u1="&#x42d;" u2="&#x40b;" k="29" />
+<hkern u1="&#x42d;" u2="&#x409;" k="27" />
+<hkern u1="&#x42d;" u2="&#x402;" k="29" />
+<hkern u1="&#x42d;" u2="&#x3ab;" k="28" />
+<hkern u1="&#x42d;" u2="&#x3a7;" k="27" />
+<hkern u1="&#x42d;" u2="&#x3a5;" k="28" />
+<hkern u1="&#x42d;" u2="&#x38e;" k="28" />
+<hkern u1="&#x42d;" u2="&#x178;" k="28" />
+<hkern u1="&#x42d;" u2="&#x176;" k="28" />
+<hkern u1="&#x42d;" u2="&#x164;" k="29" />
+<hkern u1="&#x42d;" u2="&#x162;" k="29" />
+<hkern u1="&#x42d;" u2="&#xdd;" k="28" />
+<hkern u1="&#x42d;" u2="Y" k="28" />
+<hkern u1="&#x42d;" u2="X" k="27" />
+<hkern u1="&#x42d;" u2="T" k="29" />
+<hkern u1="&#x42e;" u2="&#x513;" k="21" />
+<hkern u1="&#x42e;" u2="&#x512;" k="28" />
+<hkern u1="&#x42e;" u2="&#x508;" k="28" />
+<hkern u1="&#x42e;" u2="&#x4fc;" k="28" />
+<hkern u1="&#x42e;" u2="&#x4f2;" k="23" />
+<hkern u1="&#x42e;" u2="&#x4f0;" k="23" />
+<hkern u1="&#x42e;" u2="&#x4ee;" k="23" />
+<hkern u1="&#x42e;" u2="&#x4dc;" k="28" />
+<hkern u1="&#x42e;" u2="&#x4c6;" k="21" />
+<hkern u1="&#x42e;" u2="&#x4c5;" k="28" />
+<hkern u1="&#x42e;" u2="&#x4c1;" k="28" />
+<hkern u1="&#x42e;" u2="&#x4b4;" k="30" />
+<hkern u1="&#x42e;" u2="&#x4b2;" k="28" />
+<hkern u1="&#x42e;" u2="&#x4ac;" k="30" />
+<hkern u1="&#x42e;" u2="&#x4a0;" k="30" />
+<hkern u1="&#x42e;" u2="&#x496;" k="28" />
+<hkern u1="&#x42e;" u2="&#x459;" k="21" />
+<hkern u1="&#x42e;" u2="&#x43b;" k="21" />
+<hkern u1="&#x42e;" u2="&#x434;" k="28" />
+<hkern u1="&#x42e;" u2="&#x425;" k="28" />
+<hkern u1="&#x42e;" u2="&#x423;" k="23" />
+<hkern u1="&#x42e;" u2="&#x422;" k="30" />
+<hkern u1="&#x42e;" u2="&#x41b;" k="28" />
+<hkern u1="&#x42e;" u2="&#x416;" k="28" />
+<hkern u1="&#x42e;" u2="&#x414;" k="31" />
+<hkern u1="&#x42e;" u2="&#x40e;" k="23" />
+<hkern u1="&#x42e;" u2="&#x40b;" k="30" />
+<hkern u1="&#x42e;" u2="&#x409;" k="28" />
+<hkern u1="&#x42e;" u2="&#x402;" k="30" />
+<hkern u1="&#x42e;" u2="&#x3a7;" k="28" />
+<hkern u1="&#x42e;" u2="&#x164;" k="30" />
+<hkern u1="&#x42e;" u2="&#x162;" k="30" />
+<hkern u1="&#x42e;" u2="X" k="28" />
+<hkern u1="&#x42e;" u2="T" k="30" />
+<hkern u1="&#x42f;" u2="&#x1ef8;" k="13" />
+<hkern u1="&#x42f;" u2="&#x1ef6;" k="13" />
+<hkern u1="&#x42f;" u2="&#x1ef4;" k="13" />
+<hkern u1="&#x42f;" u2="&#x1ef2;" k="13" />
+<hkern u1="&#x42f;" u2="&#x4b4;" k="21" />
+<hkern u1="&#x42f;" u2="&#x4b0;" k="13" />
+<hkern u1="&#x42f;" u2="&#x4ae;" k="13" />
+<hkern u1="&#x42f;" u2="&#x4ac;" k="21" />
+<hkern u1="&#x42f;" u2="&#x4a0;" k="21" />
+<hkern u1="&#x42f;" u2="&#x422;" k="21" />
+<hkern u1="&#x42f;" u2="&#x40b;" k="21" />
+<hkern u1="&#x42f;" u2="&#x402;" k="21" />
+<hkern u1="&#x42f;" u2="&#x3ab;" k="13" />
+<hkern u1="&#x42f;" u2="&#x3a5;" k="13" />
+<hkern u1="&#x42f;" u2="&#x38e;" k="13" />
+<hkern u1="&#x42f;" u2="&#x178;" k="13" />
+<hkern u1="&#x42f;" u2="&#x176;" k="13" />
+<hkern u1="&#x42f;" u2="&#x164;" k="21" />
+<hkern u1="&#x42f;" u2="&#x162;" k="21" />
+<hkern u1="&#x42f;" u2="&#xdd;" k="13" />
+<hkern u1="&#x42f;" u2="Y" k="13" />
+<hkern u1="&#x42f;" u2="T" k="21" />
+<hkern u1="&#x430;" u2="&#x50f;" k="15" />
+<hkern u1="&#x430;" u2="&#x507;" k="13" />
+<hkern u1="&#x430;" u2="&#x505;" k="13" />
+<hkern u1="&#x430;" u2="&#x4a1;" k="15" />
+<hkern u1="&#x430;" u2="&#x47f;" k="13" />
+<hkern u1="&#x430;" u2="&#x461;" k="15" />
+<hkern u1="&#x430;" u2="&#x442;" k="16" />
+<hkern u1="&#x431;" u2="&#x1e3f;" k="17" />
+<hkern u1="&#x431;" u2="&#x50f;" k="17" />
+<hkern u1="&#x431;" u2="&#x4fd;" k="16" />
+<hkern u1="&#x431;" u2="&#x4fb;" k="17" />
+<hkern u1="&#x431;" u2="&#x4f9;" k="17" />
+<hkern u1="&#x431;" u2="&#x4f7;" k="17" />
+<hkern u1="&#x431;" u2="&#x4e5;" k="17" />
+<hkern u1="&#x431;" u2="&#x4e3;" k="17" />
+<hkern u1="&#x431;" u2="&#x4dd;" k="16" />
+<hkern u1="&#x431;" u2="&#x4ce;" k="17" />
+<hkern u1="&#x431;" u2="&#x4ca;" k="17" />
+<hkern u1="&#x431;" u2="&#x4c8;" k="17" />
+<hkern u1="&#x431;" u2="&#x4c2;" k="16" />
+<hkern u1="&#x431;" u2="&#x4b3;" k="16" />
+<hkern u1="&#x431;" u2="&#x4a5;" k="17" />
+<hkern u1="&#x431;" u2="&#x4a3;" k="17" />
+<hkern u1="&#x431;" u2="&#x4a1;" k="17" />
+<hkern u1="&#x431;" u2="&#x49b;" k="17" />
+<hkern u1="&#x431;" u2="&#x497;" k="16" />
+<hkern u1="&#x431;" u2="&#x48b;" k="17" />
+<hkern u1="&#x431;" u2="&#x47f;" k="15" />
+<hkern u1="&#x431;" u2="&#x461;" k="12" />
+<hkern u1="&#x431;" u2="&#x45d;" k="17" />
+<hkern u1="&#x431;" u2="&#x45c;" k="17" />
+<hkern u1="&#x431;" u2="&#x45a;" k="17" />
+<hkern u1="&#x431;" u2="&#x453;" k="17" />
+<hkern u1="&#x431;" u2="&#x44e;" k="17" />
+<hkern u1="&#x431;" u2="&#x44c;" k="17" />
+<hkern u1="&#x431;" u2="&#x449;" k="17" />
+<hkern u1="&#x431;" u2="&#x448;" k="17" />
+<hkern u1="&#x431;" u2="&#x446;" k="17" />
+<hkern u1="&#x431;" u2="&#x445;" k="16" />
+<hkern u1="&#x431;" u2="&#x442;" k="18" />
+<hkern u1="&#x431;" u2="&#x440;" k="17" />
+<hkern u1="&#x431;" u2="&#x43f;" k="17" />
+<hkern u1="&#x431;" u2="&#x43d;" k="17" />
+<hkern u1="&#x431;" u2="&#x43c;" k="17" />
+<hkern u1="&#x431;" u2="&#x43a;" k="17" />
+<hkern u1="&#x431;" u2="&#x439;" k="17" />
+<hkern u1="&#x431;" u2="&#x438;" k="17" />
+<hkern u1="&#x431;" u2="&#x436;" k="16" />
+<hkern u1="&#x431;" u2="&#x434;" k="18" />
+<hkern u1="&#x431;" u2="&#x433;" k="17" />
+<hkern u1="&#x431;" u2="&#x3b7;" k="17" />
+<hkern u1="&#x431;" u2="&#x3ae;" k="17" />
+<hkern u1="&#x431;" u2="&#x149;" k="17" />
+<hkern u1="&#x431;" u2="&#x148;" k="17" />
+<hkern u1="&#x431;" u2="&#x146;" k="17" />
+<hkern u1="&#x431;" u2="&#x144;" k="17" />
+<hkern u1="&#x431;" u2="&#xf1;" k="17" />
+<hkern u1="&#x431;" u2="x" k="16" />
+<hkern u1="&#x431;" u2="p" k="17" />
+<hkern u1="&#x431;" u2="n" k="17" />
+<hkern u1="&#x431;" u2="m" k="17" />
+<hkern u1="&#x432;" u2="&#x2033;" k="14" />
+<hkern u1="&#x432;" u2="&#x2032;" k="14" />
+<hkern u1="&#x432;" u2="&#x201d;" k="14" />
+<hkern u1="&#x432;" u2="&#x201c;" k="14" />
+<hkern u1="&#x432;" u2="&#x201b;" k="14" />
+<hkern u1="&#x432;" u2="&#x2019;" k="14" />
+<hkern u1="&#x432;" u2="&#x2018;" k="14" />
+<hkern u1="&#x432;" u2="&#x1ef9;" k="11" />
+<hkern u1="&#x432;" u2="&#x1ef7;" k="11" />
+<hkern u1="&#x432;" u2="&#x1ef5;" k="11" />
+<hkern u1="&#x432;" u2="&#x1ef3;" k="11" />
+<hkern u1="&#x432;" u2="&#x50f;" k="11" />
+<hkern u1="&#x432;" u2="&#x4f3;" k="11" />
+<hkern u1="&#x432;" u2="&#x4f1;" k="11" />
+<hkern u1="&#x432;" u2="&#x4ef;" k="11" />
+<hkern u1="&#x432;" u2="&#x4af;" k="11" />
+<hkern u1="&#x432;" u2="&#x4a1;" k="11" />
+<hkern u1="&#x432;" u2="&#x477;" k="11" />
+<hkern u1="&#x432;" u2="&#x475;" k="11" />
+<hkern u1="&#x432;" u2="&#x461;" k="11" />
+<hkern u1="&#x432;" u2="&#x45e;" k="11" />
+<hkern u1="&#x432;" u2="&#x443;" k="11" />
+<hkern u1="&#x432;" u2="&#x442;" k="12" />
+<hkern u1="&#x432;" u2="&#x3bd;" k="11" />
+<hkern u1="&#x432;" u2="&#x3b3;" k="11" />
+<hkern u1="&#x432;" u2="&#x2bc;" k="14" />
+<hkern u1="&#x432;" u2="&#x177;" k="11" />
+<hkern u1="&#x432;" u2="&#xff;" k="11" />
+<hkern u1="&#x432;" u2="&#xfd;" k="11" />
+<hkern u1="&#x432;" u2="y" k="11" />
+<hkern u1="&#x432;" u2="v" k="11" />
+<hkern u1="&#x432;" u2="&#x27;" k="14" />
+<hkern u1="&#x432;" u2="&#x22;" k="14" />
+<hkern u1="&#x433;" u2="&#x47b;" k="18" />
+<hkern u1="&#x433;" u2="&#x434;" k="55" />
+<hkern u1="&#x434;" u2="&#x50f;" k="19" />
+<hkern u1="&#x434;" u2="&#x4f5;" k="19" />
+<hkern u1="&#x434;" u2="&#x4cc;" k="19" />
+<hkern u1="&#x434;" u2="&#x4b9;" k="19" />
+<hkern u1="&#x434;" u2="&#x4b7;" k="19" />
+<hkern u1="&#x434;" u2="&#x4a1;" k="19" />
+<hkern u1="&#x434;" u2="&#x447;" k="19" />
+<hkern u1="&#x434;" u2="&#x442;" k="19" />
+<hkern u1="&#x434;" u2="&#x434;" k="-20" />
+<hkern u1="&#x435;" u2="&#x442;" k="11" />
+<hkern u1="&#x436;" u2="&#x47b;" k="15" />
+<hkern u1="&#x437;" u2="&#x2033;" k="11" />
+<hkern u1="&#x437;" u2="&#x2032;" k="11" />
+<hkern u1="&#x437;" u2="&#x201d;" k="11" />
+<hkern u1="&#x437;" u2="&#x201c;" k="11" />
+<hkern u1="&#x437;" u2="&#x201b;" k="11" />
+<hkern u1="&#x437;" u2="&#x2019;" k="11" />
+<hkern u1="&#x437;" u2="&#x2018;" k="11" />
+<hkern u1="&#x437;" u2="&#x2bc;" k="11" />
+<hkern u1="&#x437;" u2="&#x27;" k="11" />
+<hkern u1="&#x437;" u2="&#x22;" k="11" />
+<hkern u1="&#x43a;" g2="Q.smcp" k="21" />
+<hkern u1="&#x43a;" u2="&#x1ee3;" k="16" />
+<hkern u1="&#x43a;" u2="&#x1ee1;" k="56" />
+<hkern u1="&#x43a;" u2="&#x1edf;" k="16" />
+<hkern u1="&#x43a;" u2="&#x1edd;" k="16" />
+<hkern u1="&#x43a;" u2="&#x1edb;" k="16" />
+<hkern u1="&#x43a;" u2="&#x1ed9;" k="56" />
+<hkern u1="&#x43a;" u2="&#x1ed7;" k="56" />
+<hkern u1="&#x43a;" u2="&#x1ed5;" k="56" />
+<hkern u1="&#x43a;" u2="&#x1ed3;" k="56" />
+<hkern u1="&#x43a;" u2="&#x1ed1;" k="56" />
+<hkern u1="&#x43a;" u2="&#x1ecf;" k="56" />
+<hkern u1="&#x43a;" u2="&#x1ecd;" k="56" />
+<hkern u1="&#x43a;" u2="&#x1ec7;" k="16" />
+<hkern u1="&#x43a;" u2="&#x1ec5;" k="16" />
+<hkern u1="&#x43a;" u2="&#x1ec3;" k="16" />
+<hkern u1="&#x43a;" u2="&#x1ec1;" k="16" />
+<hkern u1="&#x43a;" u2="&#x1ebf;" k="16" />
+<hkern u1="&#x43a;" u2="&#x1ebd;" k="16" />
+<hkern u1="&#x43a;" u2="&#x1ebb;" k="16" />
+<hkern u1="&#x43a;" u2="&#x1eb9;" k="16" />
+<hkern u1="&#x43a;" u2="&#x50d;" k="16" />
+<hkern u1="&#x43a;" u2="&#x503;" k="16" />
+<hkern u1="&#x43a;" u2="&#x502;" k="16" />
+<hkern u1="&#x43a;" u2="&#x501;" k="16" />
+<hkern u1="&#x43a;" u2="&#x4eb;" k="56" />
+<hkern u1="&#x43a;" u2="&#x4e9;" k="16" />
+<hkern u1="&#x43a;" u2="&#x4e7;" k="56" />
+<hkern u1="&#x43a;" u2="&#x4db;" k="16" />
+<hkern u1="&#x43a;" u2="&#x4d9;" k="16" />
+<hkern u1="&#x43a;" u2="&#x4d7;" k="16" />
+<hkern u1="&#x43a;" u2="&#x4ab;" k="16" />
+<hkern u1="&#x43a;" u2="&#x4a9;" k="16" />
+<hkern u1="&#x43a;" u2="&#x481;" k="16" />
+<hkern u1="&#x43a;" u2="&#x47d;" k="16" />
+<hkern u1="&#x43a;" u2="&#x47b;" k="21" />
+<hkern u1="&#x43a;" u2="&#x479;" k="16" />
+<hkern u1="&#x43a;" u2="&#x473;" k="56" />
+<hkern u1="&#x43a;" u2="&#x454;" k="16" />
+<hkern u1="&#x43a;" u2="&#x451;" k="16" />
+<hkern u1="&#x43a;" u2="&#x450;" k="16" />
+<hkern u1="&#x43a;" u2="&#x444;" k="16" />
+<hkern u1="&#x43a;" u2="&#x441;" k="16" />
+<hkern u1="&#x43a;" u2="&#x43e;" k="56" />
+<hkern u1="&#x43a;" u2="&#x435;" k="16" />
+<hkern u1="&#x43a;" u2="&#x3cc;" k="56" />
+<hkern u1="&#x43a;" u2="&#x3c3;" k="16" />
+<hkern u1="&#x43a;" u2="&#x3c2;" k="16" />
+<hkern u1="&#x43a;" u2="&#x3bf;" k="56" />
+<hkern u1="&#x43a;" u2="&#x3b1;" k="16" />
+<hkern u1="&#x43a;" u2="&#x3ac;" k="16" />
+<hkern u1="&#x43a;" u2="&#x1a1;" k="16" />
+<hkern u1="&#x43a;" u2="&#x153;" k="16" />
+<hkern u1="&#x43a;" u2="&#x151;" k="56" />
+<hkern u1="&#x43a;" u2="&#x14f;" k="56" />
+<hkern u1="&#x43a;" u2="&#x14d;" k="56" />
+<hkern u1="&#x43a;" u2="&#x123;" k="16" />
+<hkern u1="&#x43a;" u2="&#x121;" k="16" />
+<hkern u1="&#x43a;" u2="&#x11f;" k="16" />
+<hkern u1="&#x43a;" u2="&#x11d;" k="16" />
+<hkern u1="&#x43a;" u2="&#x11b;" k="16" />
+<hkern u1="&#x43a;" u2="&#x119;" k="16" />
+<hkern u1="&#x43a;" u2="&#x117;" k="16" />
+<hkern u1="&#x43a;" u2="&#x115;" k="16" />
+<hkern u1="&#x43a;" u2="&#x113;" k="16" />
+<hkern u1="&#x43a;" u2="&#x10f;" k="16" />
+<hkern u1="&#x43a;" u2="&#x10d;" k="16" />
+<hkern u1="&#x43a;" u2="&#x10b;" k="16" />
+<hkern u1="&#x43a;" u2="&#x109;" k="16" />
+<hkern u1="&#x43a;" u2="&#x107;" k="16" />
+<hkern u1="&#x43a;" u2="&#xf6;" k="56" />
+<hkern u1="&#x43a;" u2="&#xf5;" k="56" />
+<hkern u1="&#x43a;" u2="&#xf4;" k="56" />
+<hkern u1="&#x43a;" u2="&#xf3;" k="56" />
+<hkern u1="&#x43a;" u2="&#xf2;" k="56" />
+<hkern u1="&#x43a;" u2="&#xeb;" k="16" />
+<hkern u1="&#x43a;" u2="&#xea;" k="16" />
+<hkern u1="&#x43a;" u2="&#xe9;" k="16" />
+<hkern u1="&#x43a;" u2="&#xe8;" k="16" />
+<hkern u1="&#x43a;" u2="&#xe7;" k="16" />
+<hkern u1="&#x43a;" u2="q" k="16" />
+<hkern u1="&#x43a;" u2="o" k="56" />
+<hkern u1="&#x43a;" u2="g" k="16" />
+<hkern u1="&#x43a;" u2="e" k="16" />
+<hkern u1="&#x43a;" u2="d" k="16" />
+<hkern u1="&#x43a;" u2="c" k="16" />
+<hkern u1="&#x43e;" u2="&#x50f;" k="20" />
+<hkern u1="&#x43e;" u2="&#x505;" k="11" />
+<hkern u1="&#x43e;" u2="&#x4a1;" k="21" />
+<hkern u1="&#x43e;" u2="&#x47f;" k="15" />
+<hkern u1="&#x43e;" u2="&#x461;" k="16" />
+<hkern u1="&#x43e;" u2="&#x442;" k="22" />
+<hkern u1="&#x43e;" u2="&#x3c7;" k="22" />
+<hkern u1="&#x43e;" u2="&#x3c4;" k="22" />
+<hkern u1="&#x440;" u2="&#x50f;" k="20" />
+<hkern u1="&#x440;" u2="&#x4a1;" k="20" />
+<hkern u1="&#x440;" u2="&#x442;" k="21" />
+<hkern u1="&#x440;" u2="&#x434;" k="18" />
+<hkern u1="&#x440;" u2="&#x3c7;" k="24" />
+<hkern u1="&#x440;" u2="&#x3c4;" k="22" />
+<hkern u1="&#x442;" g2="Q.smcp" k="20" />
+<hkern u1="&#x442;" g2="S.smcp" k="11" />
+<hkern u1="&#x442;" g2="T.smcp" k="-14" />
+<hkern u1="&#x442;" g2="V.smcp" k="-13" />
+<hkern u1="&#x442;" g2="Y.smcp" k="-13" />
+<hkern u1="&#x442;" u2="&#x2033;" k="-13" />
+<hkern u1="&#x442;" u2="&#x2032;" k="-13" />
+<hkern u1="&#x442;" u2="&#x201d;" k="-13" />
+<hkern u1="&#x442;" u2="&#x201c;" k="-13" />
+<hkern u1="&#x442;" u2="&#x201b;" k="-13" />
+<hkern u1="&#x442;" u2="&#x2019;" k="-13" />
+<hkern u1="&#x442;" u2="&#x2018;" k="-13" />
+<hkern u1="&#x442;" u2="&#x1ef9;" k="-11" />
+<hkern u1="&#x442;" u2="&#x1ef7;" k="-11" />
+<hkern u1="&#x442;" u2="&#x1ef5;" k="-11" />
+<hkern u1="&#x442;" u2="&#x1ef3;" k="-11" />
+<hkern u1="&#x442;" u2="&#x1ee3;" k="18" />
+<hkern u1="&#x442;" u2="&#x1ee1;" k="22" />
+<hkern u1="&#x442;" u2="&#x1edf;" k="18" />
+<hkern u1="&#x442;" u2="&#x1edd;" k="18" />
+<hkern u1="&#x442;" u2="&#x1edb;" k="18" />
+<hkern u1="&#x442;" u2="&#x1ed9;" k="22" />
+<hkern u1="&#x442;" u2="&#x1ed7;" k="22" />
+<hkern u1="&#x442;" u2="&#x1ed5;" k="22" />
+<hkern u1="&#x442;" u2="&#x1ed3;" k="22" />
+<hkern u1="&#x442;" u2="&#x1ed1;" k="22" />
+<hkern u1="&#x442;" u2="&#x1ecf;" k="22" />
+<hkern u1="&#x442;" u2="&#x1ecd;" k="22" />
+<hkern u1="&#x442;" u2="&#x1ec7;" k="18" />
+<hkern u1="&#x442;" u2="&#x1ec5;" k="18" />
+<hkern u1="&#x442;" u2="&#x1ec3;" k="18" />
+<hkern u1="&#x442;" u2="&#x1ec1;" k="18" />
+<hkern u1="&#x442;" u2="&#x1ebf;" k="18" />
+<hkern u1="&#x442;" u2="&#x1ebd;" k="18" />
+<hkern u1="&#x442;" u2="&#x1ebb;" k="18" />
+<hkern u1="&#x442;" u2="&#x1eb9;" k="18" />
+<hkern u1="&#x442;" u2="&#x1eb7;" k="16" />
+<hkern u1="&#x442;" u2="&#x1eb5;" k="16" />
+<hkern u1="&#x442;" u2="&#x1eb3;" k="16" />
+<hkern u1="&#x442;" u2="&#x1eb1;" k="16" />
+<hkern u1="&#x442;" u2="&#x1eaf;" k="16" />
+<hkern u1="&#x442;" u2="&#x1ead;" k="16" />
+<hkern u1="&#x442;" u2="&#x1eab;" k="16" />
+<hkern u1="&#x442;" u2="&#x1ea9;" k="16" />
+<hkern u1="&#x442;" u2="&#x1ea7;" k="16" />
+<hkern u1="&#x442;" u2="&#x1ea5;" k="16" />
+<hkern u1="&#x442;" u2="&#x1ea3;" k="16" />
+<hkern u1="&#x442;" u2="&#x1ea1;" k="16" />
+<hkern u1="&#x442;" u2="&#x1e01;" k="16" />
+<hkern u1="&#x442;" u2="&#x513;" k="41" />
+<hkern u1="&#x442;" u2="&#x50d;" k="18" />
+<hkern u1="&#x442;" u2="&#x507;" k="-11" />
+<hkern u1="&#x442;" u2="&#x505;" k="-11" />
+<hkern u1="&#x442;" u2="&#x503;" k="18" />
+<hkern u1="&#x442;" u2="&#x502;" k="18" />
+<hkern u1="&#x442;" u2="&#x501;" k="18" />
+<hkern u1="&#x442;" u2="&#x4f3;" k="-11" />
+<hkern u1="&#x442;" u2="&#x4f1;" k="-11" />
+<hkern u1="&#x442;" u2="&#x4ef;" k="-11" />
+<hkern u1="&#x442;" u2="&#x4eb;" k="22" />
+<hkern u1="&#x442;" u2="&#x4e9;" k="18" />
+<hkern u1="&#x442;" u2="&#x4e7;" k="22" />
+<hkern u1="&#x442;" u2="&#x4db;" k="18" />
+<hkern u1="&#x442;" u2="&#x4d9;" k="18" />
+<hkern u1="&#x442;" u2="&#x4d7;" k="18" />
+<hkern u1="&#x442;" u2="&#x4d3;" k="16" />
+<hkern u1="&#x442;" u2="&#x4d1;" k="16" />
+<hkern u1="&#x442;" u2="&#x4c6;" k="41" />
+<hkern u1="&#x442;" u2="&#x4af;" k="-11" />
+<hkern u1="&#x442;" u2="&#x4ab;" k="18" />
+<hkern u1="&#x442;" u2="&#x4a9;" k="18" />
+<hkern u1="&#x442;" u2="&#x481;" k="18" />
+<hkern u1="&#x442;" u2="&#x47f;" k="-12" />
+<hkern u1="&#x442;" u2="&#x47d;" k="18" />
+<hkern u1="&#x442;" u2="&#x47b;" k="20" />
+<hkern u1="&#x442;" u2="&#x479;" k="18" />
+<hkern u1="&#x442;" u2="&#x477;" k="-11" />
+<hkern u1="&#x442;" u2="&#x475;" k="-11" />
+<hkern u1="&#x442;" u2="&#x473;" k="22" />
+<hkern u1="&#x442;" u2="&#x45e;" k="-11" />
+<hkern u1="&#x442;" u2="&#x459;" k="41" />
+<hkern u1="&#x442;" u2="&#x454;" k="18" />
+<hkern u1="&#x442;" u2="&#x451;" k="18" />
+<hkern u1="&#x442;" u2="&#x450;" k="18" />
+<hkern u1="&#x442;" u2="&#x444;" k="18" />
+<hkern u1="&#x442;" u2="&#x443;" k="-11" />
+<hkern u1="&#x442;" u2="&#x441;" k="18" />
+<hkern u1="&#x442;" u2="&#x43e;" k="22" />
+<hkern u1="&#x442;" u2="&#x43b;" k="41" />
+<hkern u1="&#x442;" u2="&#x435;" k="18" />
+<hkern u1="&#x442;" u2="&#x434;" k="56" />
+<hkern u1="&#x442;" u2="&#x430;" k="16" />
+<hkern u1="&#x442;" u2="&#x3cc;" k="22" />
+<hkern u1="&#x442;" u2="&#x3c3;" k="18" />
+<hkern u1="&#x442;" u2="&#x3c2;" k="18" />
+<hkern u1="&#x442;" u2="&#x3bf;" k="22" />
+<hkern u1="&#x442;" u2="&#x3bd;" k="-11" />
+<hkern u1="&#x442;" u2="&#x3b3;" k="-11" />
+<hkern u1="&#x442;" u2="&#x3b1;" k="18" />
+<hkern u1="&#x442;" u2="&#x3ac;" k="18" />
+<hkern u1="&#x442;" u2="&#x2bc;" k="-13" />
+<hkern u1="&#x442;" u2="&#x1fb;" k="16" />
+<hkern u1="&#x442;" u2="&#x1a1;" k="18" />
+<hkern u1="&#x442;" u2="&#x177;" k="-11" />
+<hkern u1="&#x442;" u2="&#x153;" k="18" />
+<hkern u1="&#x442;" u2="&#x151;" k="22" />
+<hkern u1="&#x442;" u2="&#x14f;" k="22" />
+<hkern u1="&#x442;" u2="&#x14d;" k="22" />
+<hkern u1="&#x442;" u2="&#x123;" k="18" />
+<hkern u1="&#x442;" u2="&#x121;" k="18" />
+<hkern u1="&#x442;" u2="&#x11f;" k="18" />
+<hkern u1="&#x442;" u2="&#x11d;" k="18" />
+<hkern u1="&#x442;" u2="&#x11b;" k="18" />
+<hkern u1="&#x442;" u2="&#x119;" k="18" />
+<hkern u1="&#x442;" u2="&#x117;" k="18" />
+<hkern u1="&#x442;" u2="&#x115;" k="18" />
+<hkern u1="&#x442;" u2="&#x113;" k="18" />
+<hkern u1="&#x442;" u2="&#x10f;" k="18" />
+<hkern u1="&#x442;" u2="&#x10d;" k="18" />
+<hkern u1="&#x442;" u2="&#x10b;" k="18" />
+<hkern u1="&#x442;" u2="&#x109;" k="18" />
+<hkern u1="&#x442;" u2="&#x107;" k="18" />
+<hkern u1="&#x442;" u2="&#x105;" k="16" />
+<hkern u1="&#x442;" u2="&#x103;" k="16" />
+<hkern u1="&#x442;" u2="&#x101;" k="16" />
+<hkern u1="&#x442;" u2="&#xff;" k="-11" />
+<hkern u1="&#x442;" u2="&#xfd;" k="-11" />
+<hkern u1="&#x442;" u2="&#xf6;" k="22" />
+<hkern u1="&#x442;" u2="&#xf5;" k="22" />
+<hkern u1="&#x442;" u2="&#xf4;" k="22" />
+<hkern u1="&#x442;" u2="&#xf3;" k="22" />
+<hkern u1="&#x442;" u2="&#xf2;" k="22" />
+<hkern u1="&#x442;" u2="&#xeb;" k="18" />
+<hkern u1="&#x442;" u2="&#xea;" k="18" />
+<hkern u1="&#x442;" u2="&#xe9;" k="18" />
+<hkern u1="&#x442;" u2="&#xe8;" k="18" />
+<hkern u1="&#x442;" u2="&#xe7;" k="18" />
+<hkern u1="&#x442;" u2="&#xe5;" k="16" />
+<hkern u1="&#x442;" u2="&#xe4;" k="16" />
+<hkern u1="&#x442;" u2="&#xe3;" k="16" />
+<hkern u1="&#x442;" u2="&#xe2;" k="16" />
+<hkern u1="&#x442;" u2="&#xe1;" k="16" />
+<hkern u1="&#x442;" u2="&#xe0;" k="16" />
+<hkern u1="&#x442;" u2="y" k="-11" />
+<hkern u1="&#x442;" u2="v" k="-11" />
+<hkern u1="&#x442;" u2="q" k="18" />
+<hkern u1="&#x442;" u2="o" k="22" />
+<hkern u1="&#x442;" u2="g" k="18" />
+<hkern u1="&#x442;" u2="f" k="-13" />
+<hkern u1="&#x442;" u2="e" k="18" />
+<hkern u1="&#x442;" u2="d" k="18" />
+<hkern u1="&#x442;" u2="c" k="18" />
+<hkern u1="&#x442;" u2="a" k="16" />
+<hkern u1="&#x442;" u2="&#x27;" k="-13" />
+<hkern u1="&#x442;" u2="&#x22;" k="-13" />
+<hkern u1="&#x443;" u2="&#x47b;" k="15" />
+<hkern u1="&#x443;" u2="&#x434;" k="56" />
+<hkern u1="&#x443;" u2="&#x3c4;" k="-12" />
+<hkern u1="&#x443;" u2="&#x3c1;" k="22" />
+<hkern u1="&#x443;" u2="&#x3c0;" k="-11" />
+<hkern u1="&#x443;" u2="&#x3b4;" k="11" />
+<hkern u1="&#x443;" u2="f" k="-13" />
+<hkern u1="&#x444;" u2="&#x50f;" k="20" />
+<hkern u1="&#x444;" u2="&#x4a1;" k="20" />
+<hkern u1="&#x444;" u2="&#x442;" k="21" />
+<hkern u1="&#x444;" u2="&#x434;" k="18" />
+<hkern u1="&#x444;" u2="&#x3c7;" k="24" />
+<hkern u1="&#x444;" u2="&#x3c4;" k="22" />
+<hkern u1="&#x445;" u2="&#x47b;" k="15" />
+<hkern u1="&#x446;" u2="&#x513;" k="-16" />
+<hkern u1="&#x446;" u2="&#x50f;" k="16" />
+<hkern u1="&#x446;" u2="&#x4f5;" k="16" />
+<hkern u1="&#x446;" u2="&#x4cc;" k="16" />
+<hkern u1="&#x446;" u2="&#x4c6;" k="-16" />
+<hkern u1="&#x446;" u2="&#x4b9;" k="16" />
+<hkern u1="&#x446;" u2="&#x4b7;" k="16" />
+<hkern u1="&#x446;" u2="&#x4a1;" k="16" />
+<hkern u1="&#x446;" u2="&#x459;" k="-16" />
+<hkern u1="&#x446;" u2="&#x44f;" k="-12" />
+<hkern u1="&#x446;" u2="&#x447;" k="16" />
+<hkern u1="&#x446;" u2="&#x442;" k="16" />
+<hkern u1="&#x446;" u2="&#x43b;" k="-16" />
+<hkern u1="&#x446;" u2="&#x434;" k="-20" />
+<hkern u1="&#x449;" u2="&#x1ee3;" k="18" />
+<hkern u1="&#x449;" u2="&#x1edf;" k="18" />
+<hkern u1="&#x449;" u2="&#x1edd;" k="18" />
+<hkern u1="&#x449;" u2="&#x1edb;" k="18" />
+<hkern u1="&#x449;" u2="&#x1ec7;" k="18" />
+<hkern u1="&#x449;" u2="&#x1ec5;" k="18" />
+<hkern u1="&#x449;" u2="&#x1ec3;" k="18" />
+<hkern u1="&#x449;" u2="&#x1ec1;" k="18" />
+<hkern u1="&#x449;" u2="&#x1ebf;" k="18" />
+<hkern u1="&#x449;" u2="&#x1ebd;" k="18" />
+<hkern u1="&#x449;" u2="&#x1ebb;" k="18" />
+<hkern u1="&#x449;" u2="&#x1eb9;" k="18" />
+<hkern u1="&#x449;" u2="&#x513;" k="-14" />
+<hkern u1="&#x449;" u2="&#x50f;" k="29" />
+<hkern u1="&#x449;" u2="&#x50d;" k="18" />
+<hkern u1="&#x449;" u2="&#x503;" k="18" />
+<hkern u1="&#x449;" u2="&#x502;" k="18" />
+<hkern u1="&#x449;" u2="&#x501;" k="18" />
+<hkern u1="&#x449;" u2="&#x4f5;" k="29" />
+<hkern u1="&#x449;" u2="&#x4e9;" k="18" />
+<hkern u1="&#x449;" u2="&#x4db;" k="18" />
+<hkern u1="&#x449;" u2="&#x4d9;" k="18" />
+<hkern u1="&#x449;" u2="&#x4d7;" k="18" />
+<hkern u1="&#x449;" u2="&#x4cc;" k="29" />
+<hkern u1="&#x449;" u2="&#x4c6;" k="-14" />
+<hkern u1="&#x449;" u2="&#x4b9;" k="29" />
+<hkern u1="&#x449;" u2="&#x4b7;" k="29" />
+<hkern u1="&#x449;" u2="&#x4ab;" k="18" />
+<hkern u1="&#x449;" u2="&#x4a9;" k="18" />
+<hkern u1="&#x449;" u2="&#x4a1;" k="30" />
+<hkern u1="&#x449;" u2="&#x481;" k="18" />
+<hkern u1="&#x449;" u2="&#x47d;" k="18" />
+<hkern u1="&#x449;" u2="&#x479;" k="18" />
+<hkern u1="&#x449;" u2="&#x459;" k="-14" />
+<hkern u1="&#x449;" u2="&#x454;" k="18" />
+<hkern u1="&#x449;" u2="&#x451;" k="18" />
+<hkern u1="&#x449;" u2="&#x450;" k="18" />
+<hkern u1="&#x449;" u2="&#x447;" k="29" />
+<hkern u1="&#x449;" u2="&#x444;" k="18" />
+<hkern u1="&#x449;" u2="&#x442;" k="29" />
+<hkern u1="&#x449;" u2="&#x441;" k="18" />
+<hkern u1="&#x449;" u2="&#x43b;" k="-14" />
+<hkern u1="&#x449;" u2="&#x435;" k="18" />
+<hkern u1="&#x449;" u2="&#x434;" k="-18" />
+<hkern u1="&#x449;" u2="&#x3c3;" k="18" />
+<hkern u1="&#x449;" u2="&#x3c2;" k="18" />
+<hkern u1="&#x449;" u2="&#x3b1;" k="18" />
+<hkern u1="&#x449;" u2="&#x3ac;" k="18" />
+<hkern u1="&#x449;" u2="&#x1a1;" k="18" />
+<hkern u1="&#x449;" u2="&#x153;" k="18" />
+<hkern u1="&#x449;" u2="&#x123;" k="18" />
+<hkern u1="&#x449;" u2="&#x121;" k="18" />
+<hkern u1="&#x449;" u2="&#x11f;" k="18" />
+<hkern u1="&#x449;" u2="&#x11d;" k="18" />
+<hkern u1="&#x449;" u2="&#x11b;" k="18" />
+<hkern u1="&#x449;" u2="&#x119;" k="18" />
+<hkern u1="&#x449;" u2="&#x117;" k="18" />
+<hkern u1="&#x449;" u2="&#x115;" k="18" />
+<hkern u1="&#x449;" u2="&#x113;" k="18" />
+<hkern u1="&#x449;" u2="&#x10f;" k="18" />
+<hkern u1="&#x449;" u2="&#x10d;" k="18" />
+<hkern u1="&#x449;" u2="&#x10b;" k="18" />
+<hkern u1="&#x449;" u2="&#x109;" k="18" />
+<hkern u1="&#x449;" u2="&#x107;" k="18" />
+<hkern u1="&#x449;" u2="&#xeb;" k="18" />
+<hkern u1="&#x449;" u2="&#xea;" k="18" />
+<hkern u1="&#x449;" u2="&#xe9;" k="18" />
+<hkern u1="&#x449;" u2="&#xe8;" k="18" />
+<hkern u1="&#x449;" u2="&#xe7;" k="18" />
+<hkern u1="&#x449;" u2="q" k="18" />
+<hkern u1="&#x449;" u2="g" k="18" />
+<hkern u1="&#x449;" u2="e" k="18" />
+<hkern u1="&#x449;" u2="d" k="18" />
+<hkern u1="&#x449;" u2="c" k="18" />
+<hkern u1="&#x44a;" u2="&#x50f;" k="70" />
+<hkern u1="&#x44a;" u2="&#x507;" k="14" />
+<hkern u1="&#x44a;" u2="&#x505;" k="16" />
+<hkern u1="&#x44a;" u2="&#x4b9;" k="19" />
+<hkern u1="&#x44a;" u2="&#x4a1;" k="96" />
+<hkern u1="&#x44a;" u2="&#x47f;" k="37" />
+<hkern u1="&#x44a;" u2="&#x461;" k="39" />
+<hkern u1="&#x44a;" u2="&#x442;" k="70" />
+<hkern u1="&#x44c;" u2="&#x50f;" k="70" />
+<hkern u1="&#x44c;" u2="&#x507;" k="14" />
+<hkern u1="&#x44c;" u2="&#x505;" k="16" />
+<hkern u1="&#x44c;" u2="&#x4b9;" k="19" />
+<hkern u1="&#x44c;" u2="&#x4a1;" k="96" />
+<hkern u1="&#x44c;" u2="&#x47f;" k="37" />
+<hkern u1="&#x44c;" u2="&#x461;" k="39" />
+<hkern u1="&#x44c;" u2="&#x442;" k="70" />
+<hkern u1="&#x44d;" u2="&#x50f;" k="20" />
+<hkern u1="&#x44d;" u2="&#x4a1;" k="20" />
+<hkern u1="&#x44d;" u2="&#x442;" k="21" />
+<hkern u1="&#x44d;" u2="&#x434;" k="18" />
+<hkern u1="&#x44d;" u2="&#x3c7;" k="24" />
+<hkern u1="&#x44d;" u2="&#x3c4;" k="22" />
+<hkern u1="&#x44e;" u2="&#x1ef9;" k="12" />
+<hkern u1="&#x44e;" u2="&#x1ef7;" k="12" />
+<hkern u1="&#x44e;" u2="&#x1ef5;" k="12" />
+<hkern u1="&#x44e;" u2="&#x1ef3;" k="12" />
+<hkern u1="&#x44e;" u2="&#x513;" k="13" />
+<hkern u1="&#x44e;" u2="&#x4fd;" k="16" />
+<hkern u1="&#x44e;" u2="&#x4f3;" k="12" />
+<hkern u1="&#x44e;" u2="&#x4f1;" k="12" />
+<hkern u1="&#x44e;" u2="&#x4ef;" k="12" />
+<hkern u1="&#x44e;" u2="&#x4dd;" k="16" />
+<hkern u1="&#x44e;" u2="&#x4c6;" k="13" />
+<hkern u1="&#x44e;" u2="&#x4c2;" k="16" />
+<hkern u1="&#x44e;" u2="&#x4b3;" k="16" />
+<hkern u1="&#x44e;" u2="&#x4af;" k="12" />
+<hkern u1="&#x44e;" u2="&#x497;" k="16" />
+<hkern u1="&#x44e;" u2="&#x477;" k="12" />
+<hkern u1="&#x44e;" u2="&#x475;" k="12" />
+<hkern u1="&#x44e;" u2="&#x45e;" k="12" />
+<hkern u1="&#x44e;" u2="&#x459;" k="13" />
+<hkern u1="&#x44e;" u2="&#x445;" k="16" />
+<hkern u1="&#x44e;" u2="&#x443;" k="12" />
+<hkern u1="&#x44e;" u2="&#x43b;" k="13" />
+<hkern u1="&#x44e;" u2="&#x436;" k="16" />
+<hkern u1="&#x44e;" u2="&#x434;" k="17" />
+<hkern u1="&#x44e;" u2="&#x3bd;" k="12" />
+<hkern u1="&#x44e;" u2="&#x3b3;" k="12" />
+<hkern u1="&#x44e;" u2="&#x177;" k="12" />
+<hkern u1="&#x44e;" u2="&#xff;" k="12" />
+<hkern u1="&#x44e;" u2="&#xfd;" k="12" />
+<hkern u1="&#x44e;" u2="y" k="12" />
+<hkern u1="&#x44e;" u2="x" k="16" />
+<hkern u1="&#x44e;" u2="v" k="12" />
+<hkern u1="&#x450;" u2="&#x442;" k="11" />
+<hkern u1="&#x451;" u2="&#x442;" k="11" />
+<hkern u1="&#x453;" u2="&#x47b;" k="18" />
+<hkern u1="&#x453;" u2="&#x434;" k="55" />
+<hkern u1="&#x454;" u2="&#x2033;" k="42" />
+<hkern u1="&#x454;" u2="&#x2032;" k="42" />
+<hkern u1="&#x454;" u2="&#x201d;" k="42" />
+<hkern u1="&#x454;" u2="&#x201c;" k="42" />
+<hkern u1="&#x454;" u2="&#x201b;" k="42" />
+<hkern u1="&#x454;" u2="&#x2019;" k="42" />
+<hkern u1="&#x454;" u2="&#x2018;" k="42" />
+<hkern u1="&#x454;" u2="&#x2bc;" k="42" />
+<hkern u1="&#x454;" u2="&#x27;" k="42" />
+<hkern u1="&#x454;" u2="&#x22;" k="42" />
+<hkern u1="&#x459;" u2="&#x50f;" k="70" />
+<hkern u1="&#x459;" u2="&#x507;" k="14" />
+<hkern u1="&#x459;" u2="&#x505;" k="16" />
+<hkern u1="&#x459;" u2="&#x4b9;" k="19" />
+<hkern u1="&#x459;" u2="&#x4a1;" k="96" />
+<hkern u1="&#x459;" u2="&#x47f;" k="37" />
+<hkern u1="&#x459;" u2="&#x461;" k="39" />
+<hkern u1="&#x459;" u2="&#x442;" k="70" />
+<hkern u1="&#x45a;" u2="&#x50f;" k="70" />
+<hkern u1="&#x45a;" u2="&#x507;" k="14" />
+<hkern u1="&#x45a;" u2="&#x505;" k="16" />
+<hkern u1="&#x45a;" u2="&#x4b9;" k="19" />
+<hkern u1="&#x45a;" u2="&#x4a1;" k="96" />
+<hkern u1="&#x45a;" u2="&#x47f;" k="37" />
+<hkern u1="&#x45a;" u2="&#x461;" k="39" />
+<hkern u1="&#x45a;" u2="&#x442;" k="70" />
+<hkern u1="&#x45e;" u2="&#x47b;" k="15" />
+<hkern u1="&#x45e;" u2="&#x434;" k="56" />
+<hkern u1="&#x45e;" u2="&#x3c4;" k="-12" />
+<hkern u1="&#x45e;" u2="&#x3c1;" k="22" />
+<hkern u1="&#x45e;" u2="&#x3c0;" k="-11" />
+<hkern u1="&#x45e;" u2="&#x3b4;" k="11" />
+<hkern u1="&#x45e;" u2="f" k="-13" />
+<hkern u1="&#x462;" u2="&#x50f;" k="47" />
+<hkern u1="&#x462;" u2="&#x50e;" k="96" />
+<hkern u1="&#x462;" u2="&#x506;" k="20" />
+<hkern u1="&#x462;" u2="&#x504;" k="47" />
+<hkern u1="&#x462;" u2="&#x4bc;" k="33" />
+<hkern u1="&#x462;" u2="&#x4b8;" k="25" />
+<hkern u1="&#x462;" u2="&#x4a1;" k="50" />
+<hkern u1="&#x462;" u2="&#x442;" k="49" />
+<hkern u1="&#x462;" u2="&#x42c;" k="61" />
+<hkern u1="&#x463;" u2="&#x50f;" k="70" />
+<hkern u1="&#x463;" u2="&#x507;" k="14" />
+<hkern u1="&#x463;" u2="&#x505;" k="16" />
+<hkern u1="&#x463;" u2="&#x4b9;" k="19" />
+<hkern u1="&#x463;" u2="&#x4a1;" k="96" />
+<hkern u1="&#x463;" u2="&#x47f;" k="37" />
+<hkern u1="&#x463;" u2="&#x461;" k="39" />
+<hkern u1="&#x463;" u2="&#x442;" k="70" />
+<hkern u1="&#x466;" g2="T.smcp" k="57" />
+<hkern u1="&#x466;" g2="U.smcp" k="15" />
+<hkern u1="&#x466;" g2="V.smcp" k="51" />
+<hkern u1="&#x466;" g2="W.smcp" k="35" />
+<hkern u1="&#x466;" g2="Y.smcp" k="60" />
+<hkern u1="&#x466;" u2="&#x50f;" k="57" />
+<hkern u1="&#x466;" u2="&#x50e;" k="88" />
+<hkern u1="&#x466;" u2="&#x506;" k="54" />
+<hkern u1="&#x466;" u2="&#x504;" k="80" />
+<hkern u1="&#x466;" u2="&#x4d8;" k="14" />
+<hkern u1="&#x466;" u2="&#x4bd;" k="35" />
+<hkern u1="&#x466;" u2="&#x4bc;" k="152" />
+<hkern u1="&#x466;" u2="&#x4b9;" k="123" />
+<hkern u1="&#x466;" u2="&#x4b8;" k="155" />
+<hkern u1="&#x466;" u2="&#x4a1;" k="126" />
+<hkern u1="&#x466;" u2="&#x442;" k="54" />
+<hkern u1="&#x466;" u2="&#x42c;" k="59" />
+<hkern u1="&#x466;" u2="&#x414;" k="-19" />
+<hkern u1="&#x466;" u2="&#x3c4;" k="56" />
+<hkern u1="&#x466;" u2="&#x3bb;" k="-17" />
+<hkern u1="&#x466;" u2="&#x3a8;" k="47" />
+<hkern u1="&#x466;" u2="&#x3a6;" k="27" />
+<hkern u1="&#x466;" u2="&#x1af;" k="18" />
+<hkern u1="&#x466;" u2="w" k="33" />
+<hkern u1="&#x466;" u2="t" k="17" />
+<hkern u1="&#x466;" u2="&#x3f;" k="80" />
+<hkern u1="&#x473;" u2="&#x50f;" k="20" />
+<hkern u1="&#x473;" u2="&#x505;" k="11" />
+<hkern u1="&#x473;" u2="&#x4a1;" k="21" />
+<hkern u1="&#x473;" u2="&#x47f;" k="15" />
+<hkern u1="&#x473;" u2="&#x461;" k="16" />
+<hkern u1="&#x473;" u2="&#x442;" k="22" />
+<hkern u1="&#x473;" u2="&#x3c7;" k="22" />
+<hkern u1="&#x473;" u2="&#x3c4;" k="22" />
+<hkern u1="&#x474;" g2="Q.smcp" k="39" />
+<hkern u1="&#x474;" u2="&#x7d;" k="-19" />
+<hkern u1="&#x474;" u2="r" k="30" />
+<hkern u1="&#x474;" u2="]" k="-17" />
+<hkern u1="&#x474;" u2="&#x29;" k="-20" />
+<hkern u1="&#x475;" u2="&#x47b;" k="15" />
+<hkern u1="&#x475;" u2="&#x434;" k="56" />
+<hkern u1="&#x475;" u2="&#x3c4;" k="-12" />
+<hkern u1="&#x475;" u2="&#x3c1;" k="22" />
+<hkern u1="&#x475;" u2="&#x3c0;" k="-11" />
+<hkern u1="&#x475;" u2="&#x3b4;" k="11" />
+<hkern u1="&#x475;" u2="f" k="-13" />
+<hkern u1="&#x476;" g2="Q.smcp" k="39" />
+<hkern u1="&#x476;" u2="&#x7d;" k="-19" />
+<hkern u1="&#x476;" u2="r" k="30" />
+<hkern u1="&#x476;" u2="]" k="-17" />
+<hkern u1="&#x476;" u2="&#x29;" k="-20" />
+<hkern u1="&#x477;" u2="&#x47b;" k="15" />
+<hkern u1="&#x477;" u2="&#x434;" k="56" />
+<hkern u1="&#x477;" u2="&#x3c4;" k="-12" />
+<hkern u1="&#x477;" u2="&#x3c1;" k="22" />
+<hkern u1="&#x477;" u2="&#x3c0;" k="-11" />
+<hkern u1="&#x477;" u2="&#x3b4;" k="11" />
+<hkern u1="&#x477;" u2="f" k="-13" />
+<hkern u1="&#x481;" u2="&#x2033;" k="40" />
+<hkern u1="&#x481;" u2="&#x2032;" k="40" />
+<hkern u1="&#x481;" u2="&#x201d;" k="40" />
+<hkern u1="&#x481;" u2="&#x201c;" k="40" />
+<hkern u1="&#x481;" u2="&#x201b;" k="40" />
+<hkern u1="&#x481;" u2="&#x2019;" k="40" />
+<hkern u1="&#x481;" u2="&#x2018;" k="40" />
+<hkern u1="&#x481;" u2="&#x2bc;" k="40" />
+<hkern u1="&#x481;" u2="&#x27;" k="40" />
+<hkern u1="&#x481;" u2="&#x22;" k="40" />
+<hkern u1="&#x48f;" u2="&#x50f;" k="20" />
+<hkern u1="&#x48f;" u2="&#x4a1;" k="20" />
+<hkern u1="&#x48f;" u2="&#x442;" k="21" />
+<hkern u1="&#x48f;" u2="&#x434;" k="18" />
+<hkern u1="&#x48f;" u2="&#x3c7;" k="24" />
+<hkern u1="&#x48f;" u2="&#x3c4;" k="22" />
+<hkern u1="&#x490;" u2="&#x510;" k="43" />
+<hkern u1="&#x490;" u2="&#x50f;" k="208" />
+<hkern u1="&#x490;" u2="&#x50e;" k="-5" />
+<hkern u1="&#x490;" u2="&#x50b;" k="246" />
+<hkern u1="&#x490;" u2="&#x507;" k="161" />
+<hkern u1="&#x490;" u2="&#x505;" k="207" />
+<hkern u1="&#x490;" u2="&#x500;" k="273" />
+<hkern u1="&#x490;" u2="&#x4d8;" k="64" />
+<hkern u1="&#x490;" u2="&#x4bd;" k="271" />
+<hkern u1="&#x490;" u2="&#x4bc;" k="193" />
+<hkern u1="&#x490;" u2="&#x4bb;" k="244" />
+<hkern u1="&#x490;" u2="&#x4b9;" k="244" />
+<hkern u1="&#x490;" u2="&#x4a7;" k="183" />
+<hkern u1="&#x490;" u2="&#x4a1;" k="150" />
+<hkern u1="&#x490;" u2="&#x49d;" k="242" />
+<hkern u1="&#x490;" u2="&#x491;" k="196" />
+<hkern u1="&#x490;" u2="&#x48f;" k="235" />
+<hkern u1="&#x490;" u2="&#x47f;" k="84" />
+<hkern u1="&#x490;" u2="&#x47b;" k="279" />
+<hkern u1="&#x490;" u2="&#x461;" k="239" />
+<hkern u1="&#x490;" u2="&#x45f;" k="242" />
+<hkern u1="&#x490;" u2="&#x44f;" k="249" />
+<hkern u1="&#x490;" u2="&#x44d;" k="237" />
+<hkern u1="&#x490;" u2="&#x44b;" k="242" />
+<hkern u1="&#x490;" u2="&#x442;" k="152" />
+<hkern u1="&#x490;" u2="&#x437;" k="237" />
+<hkern u1="&#x490;" u2="&#x434;" k="258" />
+<hkern u1="&#x490;" u2="&#x432;" k="183" />
+<hkern u1="&#x490;" u2="&#x431;" k="67" />
+<hkern u1="&#x490;" u2="&#x42c;" k="-5" />
+<hkern u1="&#x490;" u2="&#x414;" k="157" />
+<hkern u1="&#x490;" u2="&#x3c9;" k="245" />
+<hkern u1="&#x490;" u2="&#x3c8;" k="242" />
+<hkern u1="&#x490;" u2="&#x3c7;" k="150" />
+<hkern u1="&#x490;" u2="&#x3c6;" k="241" />
+<hkern u1="&#x490;" u2="&#x3c4;" k="152" />
+<hkern u1="&#x490;" u2="&#x3c1;" k="249" />
+<hkern u1="&#x490;" u2="&#x3c0;" k="191" />
+<hkern u1="&#x490;" u2="&#x3b9;" k="246" />
+<hkern u1="&#x490;" u2="&#x3b5;" k="241" />
+<hkern u1="&#x490;" u2="&#x3b4;" k="46" />
+<hkern u1="&#x490;" u2="&#x3a6;" k="142" />
+<hkern u1="&#x490;" u2="&#xf8;" k="181" />
+<hkern u1="&#x490;" u2="&#xe6;" k="163" />
+<hkern u1="&#x490;" u2="&#xc6;" k="340" />
+<hkern u1="&#x490;" u2="&#xbb;" k="270" />
+<hkern u1="&#x490;" u2="&#xab;" k="277" />
+<hkern u1="&#x490;" u2="w" k="99" />
+<hkern u1="&#x490;" u2="r" k="130" />
+<hkern u1="&#x491;" u2="&#x47b;" k="18" />
+<hkern u1="&#x491;" u2="&#x434;" k="55" />
+<hkern u1="&#x492;" u2="&#x510;" k="43" />
+<hkern u1="&#x492;" u2="&#x50f;" k="208" />
+<hkern u1="&#x492;" u2="&#x50e;" k="-5" />
+<hkern u1="&#x492;" u2="&#x50b;" k="246" />
+<hkern u1="&#x492;" u2="&#x507;" k="161" />
+<hkern u1="&#x492;" u2="&#x505;" k="207" />
+<hkern u1="&#x492;" u2="&#x500;" k="273" />
+<hkern u1="&#x492;" u2="&#x4d8;" k="64" />
+<hkern u1="&#x492;" u2="&#x4bd;" k="271" />
+<hkern u1="&#x492;" u2="&#x4bc;" k="193" />
+<hkern u1="&#x492;" u2="&#x4bb;" k="244" />
+<hkern u1="&#x492;" u2="&#x4b9;" k="244" />
+<hkern u1="&#x492;" u2="&#x4a7;" k="183" />
+<hkern u1="&#x492;" u2="&#x4a1;" k="150" />
+<hkern u1="&#x492;" u2="&#x49d;" k="242" />
+<hkern u1="&#x492;" u2="&#x491;" k="196" />
+<hkern u1="&#x492;" u2="&#x48f;" k="235" />
+<hkern u1="&#x492;" u2="&#x47f;" k="84" />
+<hkern u1="&#x492;" u2="&#x47b;" k="279" />
+<hkern u1="&#x492;" u2="&#x461;" k="239" />
+<hkern u1="&#x492;" u2="&#x45f;" k="242" />
+<hkern u1="&#x492;" u2="&#x44f;" k="249" />
+<hkern u1="&#x492;" u2="&#x44d;" k="237" />
+<hkern u1="&#x492;" u2="&#x44b;" k="242" />
+<hkern u1="&#x492;" u2="&#x442;" k="152" />
+<hkern u1="&#x492;" u2="&#x437;" k="237" />
+<hkern u1="&#x492;" u2="&#x434;" k="258" />
+<hkern u1="&#x492;" u2="&#x432;" k="183" />
+<hkern u1="&#x492;" u2="&#x431;" k="67" />
+<hkern u1="&#x492;" u2="&#x42c;" k="-5" />
+<hkern u1="&#x492;" u2="&#x414;" k="157" />
+<hkern u1="&#x492;" u2="&#x3c9;" k="245" />
+<hkern u1="&#x492;" u2="&#x3c8;" k="242" />
+<hkern u1="&#x492;" u2="&#x3c7;" k="150" />
+<hkern u1="&#x492;" u2="&#x3c6;" k="241" />
+<hkern u1="&#x492;" u2="&#x3c4;" k="152" />
+<hkern u1="&#x492;" u2="&#x3c1;" k="249" />
+<hkern u1="&#x492;" u2="&#x3c0;" k="191" />
+<hkern u1="&#x492;" u2="&#x3b9;" k="246" />
+<hkern u1="&#x492;" u2="&#x3b5;" k="241" />
+<hkern u1="&#x492;" u2="&#x3b4;" k="46" />
+<hkern u1="&#x492;" u2="&#x3a6;" k="142" />
+<hkern u1="&#x492;" u2="&#xf8;" k="181" />
+<hkern u1="&#x492;" u2="&#xe6;" k="163" />
+<hkern u1="&#x492;" u2="&#xc6;" k="340" />
+<hkern u1="&#x492;" u2="&#xbb;" k="270" />
+<hkern u1="&#x492;" u2="&#xab;" k="277" />
+<hkern u1="&#x492;" u2="w" k="99" />
+<hkern u1="&#x492;" u2="r" k="130" />
+<hkern u1="&#x496;" g2="Q.smcp" k="23" />
+<hkern u1="&#x496;" u2="&#x510;" k="14" />
+<hkern u1="&#x496;" u2="&#x50f;" k="42" />
+<hkern u1="&#x496;" u2="&#x506;" k="-12" />
+<hkern u1="&#x496;" u2="&#x504;" k="-13" />
+<hkern u1="&#x496;" u2="&#x4d8;" k="25" />
+<hkern u1="&#x496;" u2="&#x4bd;" k="59" />
+<hkern u1="&#x496;" u2="&#x4bc;" k="42" />
+<hkern u1="&#x496;" u2="&#x4b9;" k="45" />
+<hkern u1="&#x496;" u2="&#x4a1;" k="41" />
+<hkern u1="&#x496;" u2="&#x442;" k="41" />
+<hkern u1="&#x496;" u2="&#x431;" k="23" />
+<hkern u1="&#x496;" u2="&#x414;" k="-18" />
+<hkern u1="&#x496;" u2="&#x3c9;" k="18" />
+<hkern u1="&#x496;" u2="&#x3c8;" k="27" />
+<hkern u1="&#x496;" u2="&#x3c6;" k="25" />
+<hkern u1="&#x496;" u2="&#x3c4;" k="32" />
+<hkern u1="&#x496;" u2="&#x3bb;" k="-17" />
+<hkern u1="&#x496;" u2="&#x3b8;" k="19" />
+<hkern u1="&#x496;" u2="&#x3b4;" k="16" />
+<hkern u1="&#x496;" u2="&#x3a6;" k="44" />
+<hkern u1="&#x497;" u2="&#x47b;" k="15" />
+<hkern u1="&#x49a;" g2="Q.smcp" k="25" />
+<hkern u1="&#x49a;" u2="&#x510;" k="17" />
+<hkern u1="&#x49a;" u2="&#x50f;" k="53" />
+<hkern u1="&#x49a;" u2="&#x507;" k="52" />
+<hkern u1="&#x49a;" u2="&#x505;" k="52" />
+<hkern u1="&#x49a;" u2="&#x4d8;" k="28" />
+<hkern u1="&#x49a;" u2="&#x4b9;" k="59" />
+<hkern u1="&#x49a;" u2="&#x4a1;" k="96" />
+<hkern u1="&#x49a;" u2="&#x47f;" k="56" />
+<hkern u1="&#x49a;" u2="&#x47b;" k="46" />
+<hkern u1="&#x49a;" u2="&#x461;" k="78" />
+<hkern u1="&#x49a;" u2="&#x442;" k="71" />
+<hkern u1="&#x49a;" u2="&#x431;" k="41" />
+<hkern u1="&#x49a;" u2="&#x3c4;" k="76" />
+<hkern u1="&#x49a;" u2="&#x3a6;" k="59" />
+<hkern u1="&#x49a;" u2="w" k="63" />
+<hkern u1="&#x49c;" g2="Q.smcp" k="25" />
+<hkern u1="&#x49c;" u2="&#x510;" k="17" />
+<hkern u1="&#x49c;" u2="&#x50f;" k="53" />
+<hkern u1="&#x49c;" u2="&#x507;" k="52" />
+<hkern u1="&#x49c;" u2="&#x505;" k="52" />
+<hkern u1="&#x49c;" u2="&#x4d8;" k="28" />
+<hkern u1="&#x49c;" u2="&#x4b9;" k="59" />
+<hkern u1="&#x49c;" u2="&#x4a1;" k="96" />
+<hkern u1="&#x49c;" u2="&#x47f;" k="56" />
+<hkern u1="&#x49c;" u2="&#x47b;" k="46" />
+<hkern u1="&#x49c;" u2="&#x461;" k="78" />
+<hkern u1="&#x49c;" u2="&#x442;" k="71" />
+<hkern u1="&#x49c;" u2="&#x431;" k="41" />
+<hkern u1="&#x49c;" u2="&#x3c4;" k="76" />
+<hkern u1="&#x49c;" u2="&#x3a6;" k="59" />
+<hkern u1="&#x49c;" u2="w" k="63" />
+<hkern u1="&#x49e;" g2="Q.smcp" k="25" />
+<hkern u1="&#x49e;" u2="&#x510;" k="17" />
+<hkern u1="&#x49e;" u2="&#x50f;" k="53" />
+<hkern u1="&#x49e;" u2="&#x507;" k="52" />
+<hkern u1="&#x49e;" u2="&#x505;" k="52" />
+<hkern u1="&#x49e;" u2="&#x4d8;" k="28" />
+<hkern u1="&#x49e;" u2="&#x4b9;" k="59" />
+<hkern u1="&#x49e;" u2="&#x4a1;" k="96" />
+<hkern u1="&#x49e;" u2="&#x47f;" k="56" />
+<hkern u1="&#x49e;" u2="&#x47b;" k="46" />
+<hkern u1="&#x49e;" u2="&#x461;" k="78" />
+<hkern u1="&#x49e;" u2="&#x442;" k="71" />
+<hkern u1="&#x49e;" u2="&#x431;" k="41" />
+<hkern u1="&#x49e;" u2="&#x3c4;" k="76" />
+<hkern u1="&#x49e;" u2="&#x3a6;" k="59" />
+<hkern u1="&#x49e;" u2="w" k="63" />
+<hkern u1="&#x4a0;" g2="Q.smcp" k="25" />
+<hkern u1="&#x4a0;" u2="&#x510;" k="17" />
+<hkern u1="&#x4a0;" u2="&#x50f;" k="53" />
+<hkern u1="&#x4a0;" u2="&#x507;" k="52" />
+<hkern u1="&#x4a0;" u2="&#x505;" k="52" />
+<hkern u1="&#x4a0;" u2="&#x4d8;" k="28" />
+<hkern u1="&#x4a0;" u2="&#x4b9;" k="59" />
+<hkern u1="&#x4a0;" u2="&#x4a1;" k="96" />
+<hkern u1="&#x4a0;" u2="&#x47f;" k="56" />
+<hkern u1="&#x4a0;" u2="&#x47b;" k="46" />
+<hkern u1="&#x4a0;" u2="&#x461;" k="78" />
+<hkern u1="&#x4a0;" u2="&#x442;" k="71" />
+<hkern u1="&#x4a0;" u2="&#x431;" k="41" />
+<hkern u1="&#x4a0;" u2="&#x3c4;" k="76" />
+<hkern u1="&#x4a0;" u2="&#x3a6;" k="59" />
+<hkern u1="&#x4a0;" u2="w" k="63" />
+<hkern u1="&#x4a2;" u2="&#x50e;" k="28" />
+<hkern u1="&#x4a2;" u2="&#x506;" k="30" />
+<hkern u1="&#x4a2;" u2="&#x504;" k="29" />
+<hkern u1="&#x4a2;" u2="&#x4bc;" k="28" />
+<hkern u1="&#x4a2;" u2="&#x4b9;" k="27" />
+<hkern u1="&#x4a2;" u2="&#x4b8;" k="28" />
+<hkern u1="&#x4a2;" u2="&#x434;" k="-21" />
+<hkern u1="&#x4a2;" u2="&#x414;" k="-21" />
+<hkern u1="&#x4aa;" u2="&#x4bd;" k="19" />
+<hkern u1="&#x4aa;" u2="&#x7d;" k="17" />
+<hkern u1="&#x4aa;" u2="]" k="12" />
+<hkern u1="&#x4aa;" u2="&#x29;" k="26" />
+<hkern u1="&#x4ac;" g2="Q.smcp" k="71" />
+<hkern u1="&#x4ac;" g2="S.smcp" k="68" />
+<hkern u1="&#x4ac;" g2="T.smcp" k="15" />
+<hkern u1="&#x4ac;" g2="W.smcp" k="15" />
+<hkern u1="&#x4ac;" g2="X.smcp" k="19" />
+<hkern u1="&#x4ac;" u2="&#x510;" k="14" />
+<hkern u1="&#x4ac;" u2="&#x50f;" k="111" />
+<hkern u1="&#x4ac;" u2="&#x50e;" k="-15" />
+<hkern u1="&#x4ac;" u2="&#x50b;" k="133" />
+<hkern u1="&#x4ac;" u2="&#x507;" k="83" />
+<hkern u1="&#x4ac;" u2="&#x505;" k="110" />
+<hkern u1="&#x4ac;" u2="&#x500;" k="149" />
+<hkern u1="&#x4ac;" u2="&#x4d8;" k="26" />
+<hkern u1="&#x4ac;" u2="&#x4bd;" k="148" />
+<hkern u1="&#x4ac;" u2="&#x4bc;" k="102" />
+<hkern u1="&#x4ac;" u2="&#x4bb;" k="132" />
+<hkern u1="&#x4ac;" u2="&#x4b9;" k="132" />
+<hkern u1="&#x4ac;" u2="&#x4a7;" k="96" />
+<hkern u1="&#x4ac;" u2="&#x4a1;" k="77" />
+<hkern u1="&#x4ac;" u2="&#x49d;" k="131" />
+<hkern u1="&#x4ac;" u2="&#x491;" k="104" />
+<hkern u1="&#x4ac;" u2="&#x48f;" k="127" />
+<hkern u1="&#x4ac;" u2="&#x47f;" k="38" />
+<hkern u1="&#x4ac;" u2="&#x47b;" k="153" />
+<hkern u1="&#x4ac;" u2="&#x461;" k="129" />
+<hkern u1="&#x4ac;" u2="&#x45f;" k="131" />
+<hkern u1="&#x4ac;" u2="&#x44f;" k="135" />
+<hkern u1="&#x4ac;" u2="&#x44d;" k="128" />
+<hkern u1="&#x4ac;" u2="&#x44b;" k="131" />
+<hkern u1="&#x4ac;" u2="&#x442;" k="78" />
+<hkern u1="&#x4ac;" u2="&#x437;" k="128" />
+<hkern u1="&#x4ac;" u2="&#x434;" k="140" />
+<hkern u1="&#x4ac;" u2="&#x432;" k="96" />
+<hkern u1="&#x4ac;" u2="&#x431;" k="28" />
+<hkern u1="&#x4ac;" u2="&#x42c;" k="-15" />
+<hkern u1="&#x4ac;" u2="&#x414;" k="81" />
+<hkern u1="&#x4ac;" u2="&#x3c9;" k="132" />
+<hkern u1="&#x4ac;" u2="&#x3c8;" k="131" />
+<hkern u1="&#x4ac;" u2="&#x3c7;" k="77" />
+<hkern u1="&#x4ac;" u2="&#x3c6;" k="130" />
+<hkern u1="&#x4ac;" u2="&#x3c4;" k="78" />
+<hkern u1="&#x4ac;" u2="&#x3c1;" k="135" />
+<hkern u1="&#x4ac;" u2="&#x3c0;" k="101" />
+<hkern u1="&#x4ac;" u2="&#x3b9;" k="133" />
+<hkern u1="&#x4ac;" u2="&#x3b5;" k="130" />
+<hkern u1="&#x4ac;" u2="&#x3b4;" k="15" />
+<hkern u1="&#x4ac;" u2="&#x3a6;" k="72" />
+<hkern u1="&#x4ac;" u2="&#xf8;" k="95" />
+<hkern u1="&#x4ac;" u2="&#xe6;" k="84" />
+<hkern u1="&#x4ac;" u2="&#xc6;" k="188" />
+<hkern u1="&#x4ac;" u2="&#xbb;" k="147" />
+<hkern u1="&#x4ac;" u2="&#xab;" k="151" />
+<hkern u1="&#x4ac;" u2="w" k="47" />
+<hkern u1="&#x4ac;" u2="r" k="65" />
+<hkern u1="&#x4ae;" g2="Q.smcp" k="53" />
+<hkern u1="&#x4ae;" g2="T.smcp" k="13" />
+<hkern u1="&#x4ae;" g2="W.smcp" k="13" />
+<hkern u1="&#x4ae;" g2="X.smcp" k="17" />
+<hkern u1="&#x4ae;" u2="&#x2022;" k="45" />
+<hkern u1="&#x4ae;" u2="&#x3c9;" k="57" />
+<hkern u1="&#x4ae;" u2="&#x3c8;" k="38" />
+<hkern u1="&#x4ae;" u2="&#x3c7;" k="63" />
+<hkern u1="&#x4ae;" u2="&#x3c6;" k="53" />
+<hkern u1="&#x4ae;" u2="&#x3c4;" k="23" />
+<hkern u1="&#x4ae;" u2="&#x3c1;" k="70" />
+<hkern u1="&#x4ae;" u2="&#x3c0;" k="24" />
+<hkern u1="&#x4ae;" u2="&#x3b9;" k="42" />
+<hkern u1="&#x4ae;" u2="&#x3b8;" k="23" />
+<hkern u1="&#x4ae;" u2="&#x3b6;" k="-13" />
+<hkern u1="&#x4ae;" u2="&#x3b5;" k="58" />
+<hkern u1="&#x4ae;" u2="&#x3b4;" k="18" />
+<hkern u1="&#x4ae;" u2="&#x3b2;" k="22" />
+<hkern u1="&#x4ae;" u2="&#x3a6;" k="48" />
+<hkern u1="&#x4ae;" u2="&#xf8;" k="64" />
+<hkern u1="&#x4ae;" u2="&#xe6;" k="63" />
+<hkern u1="&#x4ae;" u2="&#xc6;" k="96" />
+<hkern u1="&#x4ae;" u2="&#xbb;" k="51" />
+<hkern u1="&#x4ae;" u2="&#xab;" k="82" />
+<hkern u1="&#x4ae;" u2="&#x7d;" k="-19" />
+<hkern u1="&#x4ae;" u2="t" k="22" />
+<hkern u1="&#x4ae;" u2="r" k="40" />
+<hkern u1="&#x4ae;" u2="f" k="22" />
+<hkern u1="&#x4ae;" u2="]" k="-18" />
+<hkern u1="&#x4ae;" u2="&#x2a;" k="49" />
+<hkern u1="&#x4ae;" u2="&#x29;" k="-20" />
+<hkern u1="&#x4ae;" u2="&#x26;" k="30" />
+<hkern u1="&#x4af;" u2="&#x47b;" k="15" />
+<hkern u1="&#x4af;" u2="&#x434;" k="56" />
+<hkern u1="&#x4af;" u2="&#x3c4;" k="-12" />
+<hkern u1="&#x4af;" u2="&#x3c1;" k="22" />
+<hkern u1="&#x4af;" u2="&#x3c0;" k="-11" />
+<hkern u1="&#x4af;" u2="&#x3b4;" k="11" />
+<hkern u1="&#x4af;" u2="f" k="-13" />
+<hkern u1="&#x4b0;" g2="Q.smcp" k="53" />
+<hkern u1="&#x4b0;" g2="T.smcp" k="13" />
+<hkern u1="&#x4b0;" g2="W.smcp" k="13" />
+<hkern u1="&#x4b0;" g2="X.smcp" k="17" />
+<hkern u1="&#x4b0;" u2="&#x2022;" k="45" />
+<hkern u1="&#x4b0;" u2="&#x3c9;" k="57" />
+<hkern u1="&#x4b0;" u2="&#x3c8;" k="38" />
+<hkern u1="&#x4b0;" u2="&#x3c7;" k="63" />
+<hkern u1="&#x4b0;" u2="&#x3c6;" k="53" />
+<hkern u1="&#x4b0;" u2="&#x3c4;" k="23" />
+<hkern u1="&#x4b0;" u2="&#x3c1;" k="70" />
+<hkern u1="&#x4b0;" u2="&#x3c0;" k="24" />
+<hkern u1="&#x4b0;" u2="&#x3b9;" k="42" />
+<hkern u1="&#x4b0;" u2="&#x3b8;" k="23" />
+<hkern u1="&#x4b0;" u2="&#x3b6;" k="-13" />
+<hkern u1="&#x4b0;" u2="&#x3b5;" k="58" />
+<hkern u1="&#x4b0;" u2="&#x3b4;" k="18" />
+<hkern u1="&#x4b0;" u2="&#x3b2;" k="22" />
+<hkern u1="&#x4b0;" u2="&#x3a6;" k="48" />
+<hkern u1="&#x4b0;" u2="&#xf8;" k="64" />
+<hkern u1="&#x4b0;" u2="&#xe6;" k="63" />
+<hkern u1="&#x4b0;" u2="&#xc6;" k="96" />
+<hkern u1="&#x4b0;" u2="&#xbb;" k="51" />
+<hkern u1="&#x4b0;" u2="&#xab;" k="82" />
+<hkern u1="&#x4b0;" u2="&#x7d;" k="-19" />
+<hkern u1="&#x4b0;" u2="t" k="22" />
+<hkern u1="&#x4b0;" u2="r" k="40" />
+<hkern u1="&#x4b0;" u2="f" k="22" />
+<hkern u1="&#x4b0;" u2="]" k="-18" />
+<hkern u1="&#x4b0;" u2="&#x2a;" k="49" />
+<hkern u1="&#x4b0;" u2="&#x29;" k="-20" />
+<hkern u1="&#x4b0;" u2="&#x26;" k="30" />
+<hkern u1="&#x4b2;" g2="Q.smcp" k="23" />
+<hkern u1="&#x4b2;" u2="&#x510;" k="14" />
+<hkern u1="&#x4b2;" u2="&#x50f;" k="42" />
+<hkern u1="&#x4b2;" u2="&#x506;" k="-12" />
+<hkern u1="&#x4b2;" u2="&#x504;" k="-13" />
+<hkern u1="&#x4b2;" u2="&#x4d8;" k="25" />
+<hkern u1="&#x4b2;" u2="&#x4bd;" k="59" />
+<hkern u1="&#x4b2;" u2="&#x4bc;" k="42" />
+<hkern u1="&#x4b2;" u2="&#x4b9;" k="45" />
+<hkern u1="&#x4b2;" u2="&#x4a1;" k="41" />
+<hkern u1="&#x4b2;" u2="&#x442;" k="41" />
+<hkern u1="&#x4b2;" u2="&#x431;" k="23" />
+<hkern u1="&#x4b2;" u2="&#x414;" k="-18" />
+<hkern u1="&#x4b2;" u2="&#x3c9;" k="18" />
+<hkern u1="&#x4b2;" u2="&#x3c8;" k="27" />
+<hkern u1="&#x4b2;" u2="&#x3c6;" k="25" />
+<hkern u1="&#x4b2;" u2="&#x3c4;" k="32" />
+<hkern u1="&#x4b2;" u2="&#x3bb;" k="-17" />
+<hkern u1="&#x4b2;" u2="&#x3b8;" k="19" />
+<hkern u1="&#x4b2;" u2="&#x3b4;" k="16" />
+<hkern u1="&#x4b2;" u2="&#x3a6;" k="44" />
+<hkern u1="&#x4b3;" u2="&#x47b;" k="15" />
+<hkern u1="&#x4c0;" u2="&#x50e;" k="28" />
+<hkern u1="&#x4c0;" u2="&#x506;" k="30" />
+<hkern u1="&#x4c0;" u2="&#x504;" k="29" />
+<hkern u1="&#x4c0;" u2="&#x4bc;" k="28" />
+<hkern u1="&#x4c0;" u2="&#x4b9;" k="27" />
+<hkern u1="&#x4c0;" u2="&#x4b8;" k="28" />
+<hkern u1="&#x4c0;" u2="&#x434;" k="-21" />
+<hkern u1="&#x4c0;" u2="&#x414;" k="-21" />
+<hkern u1="&#x4c1;" g2="Q.smcp" k="23" />
+<hkern u1="&#x4c1;" u2="&#x510;" k="14" />
+<hkern u1="&#x4c1;" u2="&#x50f;" k="42" />
+<hkern u1="&#x4c1;" u2="&#x506;" k="-12" />
+<hkern u1="&#x4c1;" u2="&#x504;" k="-13" />
+<hkern u1="&#x4c1;" u2="&#x4d8;" k="25" />
+<hkern u1="&#x4c1;" u2="&#x4bd;" k="59" />
+<hkern u1="&#x4c1;" u2="&#x4bc;" k="42" />
+<hkern u1="&#x4c1;" u2="&#x4b9;" k="45" />
+<hkern u1="&#x4c1;" u2="&#x4a1;" k="41" />
+<hkern u1="&#x4c1;" u2="&#x442;" k="41" />
+<hkern u1="&#x4c1;" u2="&#x431;" k="23" />
+<hkern u1="&#x4c1;" u2="&#x414;" k="-18" />
+<hkern u1="&#x4c1;" u2="&#x3c9;" k="18" />
+<hkern u1="&#x4c1;" u2="&#x3c8;" k="27" />
+<hkern u1="&#x4c1;" u2="&#x3c6;" k="25" />
+<hkern u1="&#x4c1;" u2="&#x3c4;" k="32" />
+<hkern u1="&#x4c1;" u2="&#x3bb;" k="-17" />
+<hkern u1="&#x4c1;" u2="&#x3b8;" k="19" />
+<hkern u1="&#x4c1;" u2="&#x3b4;" k="16" />
+<hkern u1="&#x4c1;" u2="&#x3a6;" k="44" />
+<hkern u1="&#x4c2;" u2="&#x47b;" k="15" />
+<hkern u1="&#x4c9;" u2="&#x50e;" k="28" />
+<hkern u1="&#x4c9;" u2="&#x506;" k="30" />
+<hkern u1="&#x4c9;" u2="&#x504;" k="29" />
+<hkern u1="&#x4c9;" u2="&#x4bc;" k="28" />
+<hkern u1="&#x4c9;" u2="&#x4b9;" k="27" />
+<hkern u1="&#x4c9;" u2="&#x4b8;" k="28" />
+<hkern u1="&#x4c9;" u2="&#x434;" k="-21" />
+<hkern u1="&#x4c9;" u2="&#x414;" k="-21" />
+<hkern u1="&#x4cd;" u2="&#x50e;" k="28" />
+<hkern u1="&#x4cd;" u2="&#x506;" k="30" />
+<hkern u1="&#x4cd;" u2="&#x504;" k="29" />
+<hkern u1="&#x4cd;" u2="&#x4bc;" k="28" />
+<hkern u1="&#x4cd;" u2="&#x4b9;" k="27" />
+<hkern u1="&#x4cd;" u2="&#x4b8;" k="28" />
+<hkern u1="&#x4cd;" u2="&#x434;" k="-21" />
+<hkern u1="&#x4cd;" u2="&#x414;" k="-21" />
+<hkern u1="&#x4cf;" u2="&#x50e;" k="28" />
+<hkern u1="&#x4cf;" u2="&#x506;" k="30" />
+<hkern u1="&#x4cf;" u2="&#x504;" k="29" />
+<hkern u1="&#x4cf;" u2="&#x4bc;" k="28" />
+<hkern u1="&#x4cf;" u2="&#x4b9;" k="27" />
+<hkern u1="&#x4cf;" u2="&#x4b8;" k="28" />
+<hkern u1="&#x4cf;" u2="&#x434;" k="-21" />
+<hkern u1="&#x4cf;" u2="&#x414;" k="-21" />
+<hkern u1="&#x4d0;" g2="T.smcp" k="57" />
+<hkern u1="&#x4d0;" g2="U.smcp" k="15" />
+<hkern u1="&#x4d0;" g2="V.smcp" k="51" />
+<hkern u1="&#x4d0;" g2="W.smcp" k="35" />
+<hkern u1="&#x4d0;" g2="Y.smcp" k="60" />
+<hkern u1="&#x4d0;" u2="&#x50f;" k="57" />
+<hkern u1="&#x4d0;" u2="&#x50e;" k="88" />
+<hkern u1="&#x4d0;" u2="&#x506;" k="54" />
+<hkern u1="&#x4d0;" u2="&#x504;" k="80" />
+<hkern u1="&#x4d0;" u2="&#x4d8;" k="14" />
+<hkern u1="&#x4d0;" u2="&#x4bd;" k="35" />
+<hkern u1="&#x4d0;" u2="&#x4bc;" k="152" />
+<hkern u1="&#x4d0;" u2="&#x4b9;" k="123" />
+<hkern u1="&#x4d0;" u2="&#x4b8;" k="155" />
+<hkern u1="&#x4d0;" u2="&#x4a1;" k="126" />
+<hkern u1="&#x4d0;" u2="&#x442;" k="54" />
+<hkern u1="&#x4d0;" u2="&#x42c;" k="59" />
+<hkern u1="&#x4d0;" u2="&#x414;" k="-19" />
+<hkern u1="&#x4d0;" u2="&#x3c4;" k="56" />
+<hkern u1="&#x4d0;" u2="&#x3bb;" k="-17" />
+<hkern u1="&#x4d0;" u2="&#x3a8;" k="47" />
+<hkern u1="&#x4d0;" u2="&#x3a6;" k="27" />
+<hkern u1="&#x4d0;" u2="&#x1af;" k="18" />
+<hkern u1="&#x4d0;" u2="w" k="33" />
+<hkern u1="&#x4d0;" u2="t" k="17" />
+<hkern u1="&#x4d0;" u2="&#x3f;" k="80" />
+<hkern u1="&#x4d1;" u2="&#x50f;" k="15" />
+<hkern u1="&#x4d1;" u2="&#x507;" k="13" />
+<hkern u1="&#x4d1;" u2="&#x505;" k="13" />
+<hkern u1="&#x4d1;" u2="&#x4a1;" k="15" />
+<hkern u1="&#x4d1;" u2="&#x47f;" k="13" />
+<hkern u1="&#x4d1;" u2="&#x461;" k="15" />
+<hkern u1="&#x4d1;" u2="&#x442;" k="16" />
+<hkern u1="&#x4d2;" g2="T.smcp" k="57" />
+<hkern u1="&#x4d2;" g2="U.smcp" k="15" />
+<hkern u1="&#x4d2;" g2="V.smcp" k="51" />
+<hkern u1="&#x4d2;" g2="W.smcp" k="35" />
+<hkern u1="&#x4d2;" g2="Y.smcp" k="60" />
+<hkern u1="&#x4d2;" u2="&#x50f;" k="57" />
+<hkern u1="&#x4d2;" u2="&#x50e;" k="88" />
+<hkern u1="&#x4d2;" u2="&#x506;" k="54" />
+<hkern u1="&#x4d2;" u2="&#x504;" k="80" />
+<hkern u1="&#x4d2;" u2="&#x4d8;" k="14" />
+<hkern u1="&#x4d2;" u2="&#x4bd;" k="35" />
+<hkern u1="&#x4d2;" u2="&#x4bc;" k="152" />
+<hkern u1="&#x4d2;" u2="&#x4b9;" k="123" />
+<hkern u1="&#x4d2;" u2="&#x4b8;" k="155" />
+<hkern u1="&#x4d2;" u2="&#x4a1;" k="126" />
+<hkern u1="&#x4d2;" u2="&#x442;" k="54" />
+<hkern u1="&#x4d2;" u2="&#x42c;" k="59" />
+<hkern u1="&#x4d2;" u2="&#x414;" k="-19" />
+<hkern u1="&#x4d2;" u2="&#x3c4;" k="56" />
+<hkern u1="&#x4d2;" u2="&#x3bb;" k="-17" />
+<hkern u1="&#x4d2;" u2="&#x3a8;" k="47" />
+<hkern u1="&#x4d2;" u2="&#x3a6;" k="27" />
+<hkern u1="&#x4d2;" u2="&#x1af;" k="18" />
+<hkern u1="&#x4d2;" u2="w" k="33" />
+<hkern u1="&#x4d2;" u2="t" k="17" />
+<hkern u1="&#x4d2;" u2="&#x3f;" k="80" />
+<hkern u1="&#x4d3;" u2="&#x50f;" k="15" />
+<hkern u1="&#x4d3;" u2="&#x507;" k="13" />
+<hkern u1="&#x4d3;" u2="&#x505;" k="13" />
+<hkern u1="&#x4d3;" u2="&#x4a1;" k="15" />
+<hkern u1="&#x4d3;" u2="&#x47f;" k="13" />
+<hkern u1="&#x4d3;" u2="&#x461;" k="15" />
+<hkern u1="&#x4d3;" u2="&#x442;" k="16" />
+<hkern u1="&#x4d6;" g2="V.smcp" k="16" />
+<hkern u1="&#x4d6;" g2="W.smcp" k="19" />
+<hkern u1="&#x4d6;" g2="Y.smcp" k="16" />
+<hkern u1="&#x4d6;" u2="w" k="22" />
+<hkern u1="&#x4d6;" u2="f" k="18" />
+<hkern u1="&#x4d7;" u2="&#x442;" k="11" />
+<hkern u1="&#x4d9;" u2="&#x442;" k="11" />
+<hkern u1="&#x4db;" u2="&#x442;" k="11" />
+<hkern u1="&#x4dc;" g2="Q.smcp" k="23" />
+<hkern u1="&#x4dc;" u2="&#x510;" k="14" />
+<hkern u1="&#x4dc;" u2="&#x50f;" k="42" />
+<hkern u1="&#x4dc;" u2="&#x506;" k="-12" />
+<hkern u1="&#x4dc;" u2="&#x504;" k="-13" />
+<hkern u1="&#x4dc;" u2="&#x4d8;" k="25" />
+<hkern u1="&#x4dc;" u2="&#x4bd;" k="59" />
+<hkern u1="&#x4dc;" u2="&#x4bc;" k="42" />
+<hkern u1="&#x4dc;" u2="&#x4b9;" k="45" />
+<hkern u1="&#x4dc;" u2="&#x4a1;" k="41" />
+<hkern u1="&#x4dc;" u2="&#x442;" k="41" />
+<hkern u1="&#x4dc;" u2="&#x431;" k="23" />
+<hkern u1="&#x4dc;" u2="&#x414;" k="-18" />
+<hkern u1="&#x4dc;" u2="&#x3c9;" k="18" />
+<hkern u1="&#x4dc;" u2="&#x3c8;" k="27" />
+<hkern u1="&#x4dc;" u2="&#x3c6;" k="25" />
+<hkern u1="&#x4dc;" u2="&#x3c4;" k="32" />
+<hkern u1="&#x4dc;" u2="&#x3bb;" k="-17" />
+<hkern u1="&#x4dc;" u2="&#x3b8;" k="19" />
+<hkern u1="&#x4dc;" u2="&#x3b4;" k="16" />
+<hkern u1="&#x4dc;" u2="&#x3a6;" k="44" />
+<hkern u1="&#x4dd;" u2="&#x47b;" k="15" />
+<hkern u1="&#x4e6;" g2="X.smcp" k="11" />
+<hkern u1="&#x4e6;" u2="&#x50e;" k="32" />
+<hkern u1="&#x4e6;" u2="&#x42c;" k="32" />
+<hkern u1="&#x4e6;" u2="&#x414;" k="33" />
+<hkern u1="&#x4e6;" u2="&#x3bb;" k="22" />
+<hkern u1="&#x4e6;" u2="&#x3a3;" k="16" />
+<hkern u1="&#x4e6;" u2="&#x39e;" k="13" />
+<hkern u1="&#x4e6;" u2="&#xc6;" k="33" />
+<hkern u1="&#x4e7;" u2="&#x50f;" k="20" />
+<hkern u1="&#x4e7;" u2="&#x505;" k="11" />
+<hkern u1="&#x4e7;" u2="&#x4a1;" k="21" />
+<hkern u1="&#x4e7;" u2="&#x47f;" k="15" />
+<hkern u1="&#x4e7;" u2="&#x461;" k="16" />
+<hkern u1="&#x4e7;" u2="&#x442;" k="22" />
+<hkern u1="&#x4e7;" u2="&#x3c7;" k="22" />
+<hkern u1="&#x4e7;" u2="&#x3c4;" k="22" />
+<hkern u1="&#x4eb;" u2="&#x50f;" k="20" />
+<hkern u1="&#x4eb;" u2="&#x505;" k="11" />
+<hkern u1="&#x4eb;" u2="&#x4a1;" k="21" />
+<hkern u1="&#x4eb;" u2="&#x47f;" k="15" />
+<hkern u1="&#x4eb;" u2="&#x461;" k="16" />
+<hkern u1="&#x4eb;" u2="&#x442;" k="22" />
+<hkern u1="&#x4eb;" u2="&#x3c7;" k="22" />
+<hkern u1="&#x4eb;" u2="&#x3c4;" k="22" />
+<hkern u1="&#x4ed;" u2="&#x50f;" k="20" />
+<hkern u1="&#x4ed;" u2="&#x4a1;" k="20" />
+<hkern u1="&#x4ed;" u2="&#x442;" k="21" />
+<hkern u1="&#x4ed;" u2="&#x434;" k="18" />
+<hkern u1="&#x4ed;" u2="&#x3c7;" k="24" />
+<hkern u1="&#x4ed;" u2="&#x3c4;" k="22" />
+<hkern u1="&#x4ee;" u2="&#x50e;" k="-17" />
+<hkern u1="&#x4ee;" u2="&#x50b;" k="33" />
+<hkern u1="&#x4ee;" u2="&#x500;" k="67" />
+<hkern u1="&#x4ee;" u2="&#x4bd;" k="38" />
+<hkern u1="&#x4ee;" u2="&#x4bb;" k="34" />
+<hkern u1="&#x4ee;" u2="&#x4b9;" k="23" />
+<hkern u1="&#x4ee;" u2="&#x4a7;" k="32" />
+<hkern u1="&#x4ee;" u2="&#x49d;" k="32" />
+<hkern u1="&#x4ee;" u2="&#x491;" k="30" />
+<hkern u1="&#x4ee;" u2="&#x48f;" k="35" />
+<hkern u1="&#x4ee;" u2="&#x47b;" k="50" />
+<hkern u1="&#x4ee;" u2="&#x45f;" k="32" />
+<hkern u1="&#x4ee;" u2="&#x44f;" k="46" />
+<hkern u1="&#x4ee;" u2="&#x44b;" k="33" />
+<hkern u1="&#x4ee;" u2="&#x437;" k="42" />
+<hkern u1="&#x4ee;" u2="&#x434;" k="83" />
+<hkern u1="&#x4ee;" u2="&#x432;" k="32" />
+<hkern u1="&#x4ee;" u2="&#x42c;" k="-18" />
+<hkern u1="&#x4ee;" u2="&#x414;" k="82" />
+<hkern u1="&#x4ef;" u2="&#x47b;" k="15" />
+<hkern u1="&#x4ef;" u2="&#x434;" k="56" />
+<hkern u1="&#x4ef;" u2="&#x3c4;" k="-12" />
+<hkern u1="&#x4ef;" u2="&#x3c1;" k="22" />
+<hkern u1="&#x4ef;" u2="&#x3c0;" k="-11" />
+<hkern u1="&#x4ef;" u2="&#x3b4;" k="11" />
+<hkern u1="&#x4ef;" u2="f" k="-13" />
+<hkern u1="&#x4f0;" u2="&#x50e;" k="-17" />
+<hkern u1="&#x4f0;" u2="&#x50b;" k="33" />
+<hkern u1="&#x4f0;" u2="&#x500;" k="67" />
+<hkern u1="&#x4f0;" u2="&#x4bd;" k="38" />
+<hkern u1="&#x4f0;" u2="&#x4bb;" k="34" />
+<hkern u1="&#x4f0;" u2="&#x4b9;" k="23" />
+<hkern u1="&#x4f0;" u2="&#x4a7;" k="32" />
+<hkern u1="&#x4f0;" u2="&#x49d;" k="32" />
+<hkern u1="&#x4f0;" u2="&#x491;" k="30" />
+<hkern u1="&#x4f0;" u2="&#x48f;" k="35" />
+<hkern u1="&#x4f0;" u2="&#x47b;" k="50" />
+<hkern u1="&#x4f0;" u2="&#x45f;" k="32" />
+<hkern u1="&#x4f0;" u2="&#x44f;" k="46" />
+<hkern u1="&#x4f0;" u2="&#x44b;" k="33" />
+<hkern u1="&#x4f0;" u2="&#x437;" k="42" />
+<hkern u1="&#x4f0;" u2="&#x434;" k="83" />
+<hkern u1="&#x4f0;" u2="&#x432;" k="32" />
+<hkern u1="&#x4f0;" u2="&#x42c;" k="-18" />
+<hkern u1="&#x4f0;" u2="&#x414;" k="82" />
+<hkern u1="&#x4f1;" u2="&#x47b;" k="15" />
+<hkern u1="&#x4f1;" u2="&#x434;" k="56" />
+<hkern u1="&#x4f1;" u2="&#x3c4;" k="-12" />
+<hkern u1="&#x4f1;" u2="&#x3c1;" k="22" />
+<hkern u1="&#x4f1;" u2="&#x3c0;" k="-11" />
+<hkern u1="&#x4f1;" u2="&#x3b4;" k="11" />
+<hkern u1="&#x4f1;" u2="f" k="-13" />
+<hkern u1="&#x4f2;" u2="&#x50e;" k="-17" />
+<hkern u1="&#x4f2;" u2="&#x50b;" k="33" />
+<hkern u1="&#x4f2;" u2="&#x500;" k="67" />
+<hkern u1="&#x4f2;" u2="&#x4bd;" k="38" />
+<hkern u1="&#x4f2;" u2="&#x4bb;" k="34" />
+<hkern u1="&#x4f2;" u2="&#x4b9;" k="23" />
+<hkern u1="&#x4f2;" u2="&#x4a7;" k="32" />
+<hkern u1="&#x4f2;" u2="&#x49d;" k="32" />
+<hkern u1="&#x4f2;" u2="&#x491;" k="30" />
+<hkern u1="&#x4f2;" u2="&#x48f;" k="35" />
+<hkern u1="&#x4f2;" u2="&#x47b;" k="50" />
+<hkern u1="&#x4f2;" u2="&#x45f;" k="32" />
+<hkern u1="&#x4f2;" u2="&#x44f;" k="46" />
+<hkern u1="&#x4f2;" u2="&#x44b;" k="33" />
+<hkern u1="&#x4f2;" u2="&#x437;" k="42" />
+<hkern u1="&#x4f2;" u2="&#x434;" k="83" />
+<hkern u1="&#x4f2;" u2="&#x432;" k="32" />
+<hkern u1="&#x4f2;" u2="&#x42c;" k="-18" />
+<hkern u1="&#x4f2;" u2="&#x414;" k="82" />
+<hkern u1="&#x4f3;" u2="&#x47b;" k="15" />
+<hkern u1="&#x4f3;" u2="&#x434;" k="56" />
+<hkern u1="&#x4f3;" u2="&#x3c4;" k="-12" />
+<hkern u1="&#x4f3;" u2="&#x3c1;" k="22" />
+<hkern u1="&#x4f3;" u2="&#x3c0;" k="-11" />
+<hkern u1="&#x4f3;" u2="&#x3b4;" k="11" />
+<hkern u1="&#x4f3;" u2="f" k="-13" />
+<hkern u1="&#x4f6;" u2="&#x510;" k="43" />
+<hkern u1="&#x4f6;" u2="&#x50f;" k="208" />
+<hkern u1="&#x4f6;" u2="&#x50e;" k="-5" />
+<hkern u1="&#x4f6;" u2="&#x50b;" k="246" />
+<hkern u1="&#x4f6;" u2="&#x507;" k="161" />
+<hkern u1="&#x4f6;" u2="&#x505;" k="207" />
+<hkern u1="&#x4f6;" u2="&#x500;" k="273" />
+<hkern u1="&#x4f6;" u2="&#x4d8;" k="64" />
+<hkern u1="&#x4f6;" u2="&#x4bd;" k="271" />
+<hkern u1="&#x4f6;" u2="&#x4bc;" k="193" />
+<hkern u1="&#x4f6;" u2="&#x4bb;" k="244" />
+<hkern u1="&#x4f6;" u2="&#x4b9;" k="244" />
+<hkern u1="&#x4f6;" u2="&#x4a7;" k="183" />
+<hkern u1="&#x4f6;" u2="&#x4a1;" k="150" />
+<hkern u1="&#x4f6;" u2="&#x49d;" k="242" />
+<hkern u1="&#x4f6;" u2="&#x491;" k="196" />
+<hkern u1="&#x4f6;" u2="&#x48f;" k="235" />
+<hkern u1="&#x4f6;" u2="&#x47f;" k="84" />
+<hkern u1="&#x4f6;" u2="&#x47b;" k="279" />
+<hkern u1="&#x4f6;" u2="&#x461;" k="239" />
+<hkern u1="&#x4f6;" u2="&#x45f;" k="242" />
+<hkern u1="&#x4f6;" u2="&#x44f;" k="249" />
+<hkern u1="&#x4f6;" u2="&#x44d;" k="237" />
+<hkern u1="&#x4f6;" u2="&#x44b;" k="242" />
+<hkern u1="&#x4f6;" u2="&#x442;" k="152" />
+<hkern u1="&#x4f6;" u2="&#x437;" k="237" />
+<hkern u1="&#x4f6;" u2="&#x434;" k="258" />
+<hkern u1="&#x4f6;" u2="&#x432;" k="183" />
+<hkern u1="&#x4f6;" u2="&#x431;" k="67" />
+<hkern u1="&#x4f6;" u2="&#x42c;" k="-5" />
+<hkern u1="&#x4f6;" u2="&#x414;" k="157" />
+<hkern u1="&#x4f6;" u2="&#x3c9;" k="245" />
+<hkern u1="&#x4f6;" u2="&#x3c8;" k="242" />
+<hkern u1="&#x4f6;" u2="&#x3c7;" k="150" />
+<hkern u1="&#x4f6;" u2="&#x3c6;" k="241" />
+<hkern u1="&#x4f6;" u2="&#x3c4;" k="152" />
+<hkern u1="&#x4f6;" u2="&#x3c1;" k="249" />
+<hkern u1="&#x4f6;" u2="&#x3c0;" k="191" />
+<hkern u1="&#x4f6;" u2="&#x3b9;" k="246" />
+<hkern u1="&#x4f6;" u2="&#x3b5;" k="241" />
+<hkern u1="&#x4f6;" u2="&#x3b4;" k="46" />
+<hkern u1="&#x4f6;" u2="&#x3a6;" k="142" />
+<hkern u1="&#x4f6;" u2="&#xf8;" k="181" />
+<hkern u1="&#x4f6;" u2="&#xe6;" k="163" />
+<hkern u1="&#x4f6;" u2="&#xc6;" k="340" />
+<hkern u1="&#x4f6;" u2="&#xbb;" k="270" />
+<hkern u1="&#x4f6;" u2="&#xab;" k="277" />
+<hkern u1="&#x4f6;" u2="w" k="99" />
+<hkern u1="&#x4f6;" u2="r" k="130" />
+<hkern u1="&#x4f7;" u2="&#x47b;" k="18" />
+<hkern u1="&#x4f7;" u2="&#x434;" k="55" />
+<hkern u1="&#x4fb;" u2="&#x47b;" k="18" />
+<hkern u1="&#x4fb;" u2="&#x434;" k="55" />
+<hkern u1="&#x4fc;" g2="Q.smcp" k="23" />
+<hkern u1="&#x4fc;" u2="&#x510;" k="14" />
+<hkern u1="&#x4fc;" u2="&#x50f;" k="42" />
+<hkern u1="&#x4fc;" u2="&#x506;" k="-12" />
+<hkern u1="&#x4fc;" u2="&#x504;" k="-13" />
+<hkern u1="&#x4fc;" u2="&#x4d8;" k="25" />
+<hkern u1="&#x4fc;" u2="&#x4bd;" k="59" />
+<hkern u1="&#x4fc;" u2="&#x4bc;" k="42" />
+<hkern u1="&#x4fc;" u2="&#x4b9;" k="45" />
+<hkern u1="&#x4fc;" u2="&#x4a1;" k="41" />
+<hkern u1="&#x4fc;" u2="&#x442;" k="41" />
+<hkern u1="&#x4fc;" u2="&#x431;" k="23" />
+<hkern u1="&#x4fc;" u2="&#x414;" k="-18" />
+<hkern u1="&#x4fc;" u2="&#x3c9;" k="18" />
+<hkern u1="&#x4fc;" u2="&#x3c8;" k="27" />
+<hkern u1="&#x4fc;" u2="&#x3c6;" k="25" />
+<hkern u1="&#x4fc;" u2="&#x3c4;" k="32" />
+<hkern u1="&#x4fc;" u2="&#x3bb;" k="-17" />
+<hkern u1="&#x4fc;" u2="&#x3b8;" k="19" />
+<hkern u1="&#x4fc;" u2="&#x3b4;" k="16" />
+<hkern u1="&#x4fc;" u2="&#x3a6;" k="44" />
+<hkern u1="&#x4fd;" u2="&#x47b;" k="15" />
+<hkern u1="&#x1e00;" g2="T.smcp" k="57" />
+<hkern u1="&#x1e00;" g2="U.smcp" k="15" />
+<hkern u1="&#x1e00;" g2="V.smcp" k="51" />
+<hkern u1="&#x1e00;" g2="W.smcp" k="35" />
+<hkern u1="&#x1e00;" g2="Y.smcp" k="60" />
+<hkern u1="&#x1e00;" u2="&#x50f;" k="57" />
+<hkern u1="&#x1e00;" u2="&#x50e;" k="88" />
+<hkern u1="&#x1e00;" u2="&#x506;" k="54" />
+<hkern u1="&#x1e00;" u2="&#x504;" k="80" />
+<hkern u1="&#x1e00;" u2="&#x4d8;" k="14" />
+<hkern u1="&#x1e00;" u2="&#x4bd;" k="35" />
+<hkern u1="&#x1e00;" u2="&#x4bc;" k="152" />
+<hkern u1="&#x1e00;" u2="&#x4b9;" k="123" />
+<hkern u1="&#x1e00;" u2="&#x4b8;" k="155" />
+<hkern u1="&#x1e00;" u2="&#x4a1;" k="126" />
+<hkern u1="&#x1e00;" u2="&#x442;" k="54" />
+<hkern u1="&#x1e00;" u2="&#x42c;" k="59" />
+<hkern u1="&#x1e00;" u2="&#x414;" k="-19" />
+<hkern u1="&#x1e00;" u2="&#x3c4;" k="56" />
+<hkern u1="&#x1e00;" u2="&#x3bb;" k="-17" />
+<hkern u1="&#x1e00;" u2="&#x3a8;" k="47" />
+<hkern u1="&#x1e00;" u2="&#x3a6;" k="27" />
+<hkern u1="&#x1e00;" u2="&#x1af;" k="18" />
+<hkern u1="&#x1e00;" u2="w" k="33" />
+<hkern u1="&#x1e00;" u2="t" k="17" />
+<hkern u1="&#x1e00;" u2="&#x3f;" k="80" />
+<hkern u1="&#x1e01;" u2="&#x50f;" k="15" />
+<hkern u1="&#x1e01;" u2="&#x507;" k="13" />
+<hkern u1="&#x1e01;" u2="&#x505;" k="13" />
+<hkern u1="&#x1e01;" u2="&#x4a1;" k="15" />
+<hkern u1="&#x1e01;" u2="&#x47f;" k="13" />
+<hkern u1="&#x1e01;" u2="&#x461;" k="15" />
+<hkern u1="&#x1e01;" u2="&#x442;" k="16" />
+<hkern u1="&#x1e3e;" u2="&#x50e;" k="28" />
+<hkern u1="&#x1e3e;" u2="&#x506;" k="30" />
+<hkern u1="&#x1e3e;" u2="&#x504;" k="29" />
+<hkern u1="&#x1e3e;" u2="&#x4bc;" k="28" />
+<hkern u1="&#x1e3e;" u2="&#x4b9;" k="27" />
+<hkern u1="&#x1e3e;" u2="&#x4b8;" k="28" />
+<hkern u1="&#x1e3e;" u2="&#x434;" k="-21" />
+<hkern u1="&#x1e3e;" u2="&#x414;" k="-21" />
+<hkern u1="&#x1e80;" g2="Q.smcp" k="25" />
+<hkern u1="&#x1e80;" u2="&#x7d;" k="-14" />
+<hkern u1="&#x1e80;" u2="r" k="21" />
+<hkern u1="&#x1e80;" u2="]" k="-12" />
+<hkern u1="&#x1e80;" u2="&#x29;" k="-15" />
+<hkern u1="&#x1e82;" g2="Q.smcp" k="25" />
+<hkern u1="&#x1e82;" u2="&#x7d;" k="-14" />
+<hkern u1="&#x1e82;" u2="r" k="21" />
+<hkern u1="&#x1e82;" u2="]" k="-12" />
+<hkern u1="&#x1e82;" u2="&#x29;" k="-15" />
+<hkern u1="&#x1e84;" g2="Q.smcp" k="25" />
+<hkern u1="&#x1e84;" u2="&#x7d;" k="-14" />
+<hkern u1="&#x1e84;" u2="r" k="21" />
+<hkern u1="&#x1e84;" u2="]" k="-12" />
+<hkern u1="&#x1e84;" u2="&#x29;" k="-15" />
+<hkern u1="&#x1ea0;" g2="T.smcp" k="57" />
+<hkern u1="&#x1ea0;" g2="U.smcp" k="15" />
+<hkern u1="&#x1ea0;" g2="V.smcp" k="51" />
+<hkern u1="&#x1ea0;" g2="W.smcp" k="35" />
+<hkern u1="&#x1ea0;" g2="Y.smcp" k="60" />
+<hkern u1="&#x1ea0;" u2="&#x50f;" k="57" />
+<hkern u1="&#x1ea0;" u2="&#x50e;" k="88" />
+<hkern u1="&#x1ea0;" u2="&#x506;" k="54" />
+<hkern u1="&#x1ea0;" u2="&#x504;" k="80" />
+<hkern u1="&#x1ea0;" u2="&#x4d8;" k="14" />
+<hkern u1="&#x1ea0;" u2="&#x4bd;" k="35" />
+<hkern u1="&#x1ea0;" u2="&#x4bc;" k="152" />
+<hkern u1="&#x1ea0;" u2="&#x4b9;" k="123" />
+<hkern u1="&#x1ea0;" u2="&#x4b8;" k="155" />
+<hkern u1="&#x1ea0;" u2="&#x4a1;" k="126" />
+<hkern u1="&#x1ea0;" u2="&#x442;" k="54" />
+<hkern u1="&#x1ea0;" u2="&#x42c;" k="59" />
+<hkern u1="&#x1ea0;" u2="&#x414;" k="-19" />
+<hkern u1="&#x1ea0;" u2="&#x3c4;" k="56" />
+<hkern u1="&#x1ea0;" u2="&#x3bb;" k="-17" />
+<hkern u1="&#x1ea0;" u2="&#x3a8;" k="47" />
+<hkern u1="&#x1ea0;" u2="&#x3a6;" k="27" />
+<hkern u1="&#x1ea0;" u2="&#x1af;" k="18" />
+<hkern u1="&#x1ea0;" u2="w" k="33" />
+<hkern u1="&#x1ea0;" u2="t" k="17" />
+<hkern u1="&#x1ea0;" u2="&#x3f;" k="80" />
+<hkern u1="&#x1ea1;" u2="&#x50f;" k="15" />
+<hkern u1="&#x1ea1;" u2="&#x507;" k="13" />
+<hkern u1="&#x1ea1;" u2="&#x505;" k="13" />
+<hkern u1="&#x1ea1;" u2="&#x4a1;" k="15" />
+<hkern u1="&#x1ea1;" u2="&#x47f;" k="13" />
+<hkern u1="&#x1ea1;" u2="&#x461;" k="15" />
+<hkern u1="&#x1ea1;" u2="&#x442;" k="16" />
+<hkern u1="&#x1ea2;" g2="T.smcp" k="57" />
+<hkern u1="&#x1ea2;" g2="U.smcp" k="15" />
+<hkern u1="&#x1ea2;" g2="V.smcp" k="51" />
+<hkern u1="&#x1ea2;" g2="W.smcp" k="35" />
+<hkern u1="&#x1ea2;" g2="Y.smcp" k="60" />
+<hkern u1="&#x1ea2;" u2="&#x50f;" k="57" />
+<hkern u1="&#x1ea2;" u2="&#x50e;" k="88" />
+<hkern u1="&#x1ea2;" u2="&#x506;" k="54" />
+<hkern u1="&#x1ea2;" u2="&#x504;" k="80" />
+<hkern u1="&#x1ea2;" u2="&#x4d8;" k="14" />
+<hkern u1="&#x1ea2;" u2="&#x4bd;" k="35" />
+<hkern u1="&#x1ea2;" u2="&#x4bc;" k="152" />
+<hkern u1="&#x1ea2;" u2="&#x4b9;" k="123" />
+<hkern u1="&#x1ea2;" u2="&#x4b8;" k="155" />
+<hkern u1="&#x1ea2;" u2="&#x4a1;" k="126" />
+<hkern u1="&#x1ea2;" u2="&#x442;" k="54" />
+<hkern u1="&#x1ea2;" u2="&#x42c;" k="59" />
+<hkern u1="&#x1ea2;" u2="&#x414;" k="-19" />
+<hkern u1="&#x1ea2;" u2="&#x3c4;" k="56" />
+<hkern u1="&#x1ea2;" u2="&#x3bb;" k="-17" />
+<hkern u1="&#x1ea2;" u2="&#x3a8;" k="47" />
+<hkern u1="&#x1ea2;" u2="&#x3a6;" k="27" />
+<hkern u1="&#x1ea2;" u2="&#x1af;" k="18" />
+<hkern u1="&#x1ea2;" u2="w" k="33" />
+<hkern u1="&#x1ea2;" u2="t" k="17" />
+<hkern u1="&#x1ea2;" u2="&#x3f;" k="80" />
+<hkern u1="&#x1ea3;" u2="&#x50f;" k="15" />
+<hkern u1="&#x1ea3;" u2="&#x507;" k="13" />
+<hkern u1="&#x1ea3;" u2="&#x505;" k="13" />
+<hkern u1="&#x1ea3;" u2="&#x4a1;" k="15" />
+<hkern u1="&#x1ea3;" u2="&#x47f;" k="13" />
+<hkern u1="&#x1ea3;" u2="&#x461;" k="15" />
+<hkern u1="&#x1ea3;" u2="&#x442;" k="16" />
+<hkern u1="&#x1ea4;" g2="T.smcp" k="57" />
+<hkern u1="&#x1ea4;" g2="U.smcp" k="15" />
+<hkern u1="&#x1ea4;" g2="V.smcp" k="51" />
+<hkern u1="&#x1ea4;" g2="W.smcp" k="35" />
+<hkern u1="&#x1ea4;" g2="Y.smcp" k="60" />
+<hkern u1="&#x1ea4;" u2="&#x50f;" k="57" />
+<hkern u1="&#x1ea4;" u2="&#x50e;" k="88" />
+<hkern u1="&#x1ea4;" u2="&#x506;" k="54" />
+<hkern u1="&#x1ea4;" u2="&#x504;" k="80" />
+<hkern u1="&#x1ea4;" u2="&#x4d8;" k="14" />
+<hkern u1="&#x1ea4;" u2="&#x4bd;" k="35" />
+<hkern u1="&#x1ea4;" u2="&#x4bc;" k="152" />
+<hkern u1="&#x1ea4;" u2="&#x4b9;" k="123" />
+<hkern u1="&#x1ea4;" u2="&#x4b8;" k="155" />
+<hkern u1="&#x1ea4;" u2="&#x4a1;" k="126" />
+<hkern u1="&#x1ea4;" u2="&#x442;" k="54" />
+<hkern u1="&#x1ea4;" u2="&#x42c;" k="59" />
+<hkern u1="&#x1ea4;" u2="&#x414;" k="-19" />
+<hkern u1="&#x1ea4;" u2="&#x3c4;" k="56" />
+<hkern u1="&#x1ea4;" u2="&#x3bb;" k="-17" />
+<hkern u1="&#x1ea4;" u2="&#x3a8;" k="47" />
+<hkern u1="&#x1ea4;" u2="&#x3a6;" k="27" />
+<hkern u1="&#x1ea4;" u2="&#x1af;" k="18" />
+<hkern u1="&#x1ea4;" u2="w" k="33" />
+<hkern u1="&#x1ea4;" u2="t" k="17" />
+<hkern u1="&#x1ea4;" u2="&#x3f;" k="80" />
+<hkern u1="&#x1ea5;" u2="&#x50f;" k="15" />
+<hkern u1="&#x1ea5;" u2="&#x507;" k="13" />
+<hkern u1="&#x1ea5;" u2="&#x505;" k="13" />
+<hkern u1="&#x1ea5;" u2="&#x4a1;" k="15" />
+<hkern u1="&#x1ea5;" u2="&#x47f;" k="13" />
+<hkern u1="&#x1ea5;" u2="&#x461;" k="15" />
+<hkern u1="&#x1ea5;" u2="&#x442;" k="16" />
+<hkern u1="&#x1ea6;" g2="T.smcp" k="57" />
+<hkern u1="&#x1ea6;" g2="U.smcp" k="15" />
+<hkern u1="&#x1ea6;" g2="V.smcp" k="51" />
+<hkern u1="&#x1ea6;" g2="W.smcp" k="35" />
+<hkern u1="&#x1ea6;" g2="Y.smcp" k="60" />
+<hkern u1="&#x1ea6;" u2="&#x50f;" k="57" />
+<hkern u1="&#x1ea6;" u2="&#x50e;" k="88" />
+<hkern u1="&#x1ea6;" u2="&#x506;" k="54" />
+<hkern u1="&#x1ea6;" u2="&#x504;" k="80" />
+<hkern u1="&#x1ea6;" u2="&#x4d8;" k="14" />
+<hkern u1="&#x1ea6;" u2="&#x4bd;" k="35" />
+<hkern u1="&#x1ea6;" u2="&#x4bc;" k="152" />
+<hkern u1="&#x1ea6;" u2="&#x4b9;" k="123" />
+<hkern u1="&#x1ea6;" u2="&#x4b8;" k="155" />
+<hkern u1="&#x1ea6;" u2="&#x4a1;" k="126" />
+<hkern u1="&#x1ea6;" u2="&#x442;" k="54" />
+<hkern u1="&#x1ea6;" u2="&#x42c;" k="59" />
+<hkern u1="&#x1ea6;" u2="&#x414;" k="-19" />
+<hkern u1="&#x1ea6;" u2="&#x3c4;" k="56" />
+<hkern u1="&#x1ea6;" u2="&#x3bb;" k="-17" />
+<hkern u1="&#x1ea6;" u2="&#x3a8;" k="47" />
+<hkern u1="&#x1ea6;" u2="&#x3a6;" k="27" />
+<hkern u1="&#x1ea6;" u2="&#x1af;" k="18" />
+<hkern u1="&#x1ea6;" u2="w" k="33" />
+<hkern u1="&#x1ea6;" u2="t" k="17" />
+<hkern u1="&#x1ea6;" u2="&#x3f;" k="80" />
+<hkern u1="&#x1ea7;" u2="&#x50f;" k="15" />
+<hkern u1="&#x1ea7;" u2="&#x507;" k="13" />
+<hkern u1="&#x1ea7;" u2="&#x505;" k="13" />
+<hkern u1="&#x1ea7;" u2="&#x4a1;" k="15" />
+<hkern u1="&#x1ea7;" u2="&#x47f;" k="13" />
+<hkern u1="&#x1ea7;" u2="&#x461;" k="15" />
+<hkern u1="&#x1ea7;" u2="&#x442;" k="16" />
+<hkern u1="&#x1ea8;" g2="T.smcp" k="57" />
+<hkern u1="&#x1ea8;" g2="U.smcp" k="15" />
+<hkern u1="&#x1ea8;" g2="V.smcp" k="51" />
+<hkern u1="&#x1ea8;" g2="W.smcp" k="35" />
+<hkern u1="&#x1ea8;" g2="Y.smcp" k="60" />
+<hkern u1="&#x1ea8;" u2="&#x50f;" k="57" />
+<hkern u1="&#x1ea8;" u2="&#x50e;" k="88" />
+<hkern u1="&#x1ea8;" u2="&#x506;" k="54" />
+<hkern u1="&#x1ea8;" u2="&#x504;" k="80" />
+<hkern u1="&#x1ea8;" u2="&#x4d8;" k="14" />
+<hkern u1="&#x1ea8;" u2="&#x4bd;" k="35" />
+<hkern u1="&#x1ea8;" u2="&#x4bc;" k="152" />
+<hkern u1="&#x1ea8;" u2="&#x4b9;" k="123" />
+<hkern u1="&#x1ea8;" u2="&#x4b8;" k="155" />
+<hkern u1="&#x1ea8;" u2="&#x4a1;" k="126" />
+<hkern u1="&#x1ea8;" u2="&#x442;" k="54" />
+<hkern u1="&#x1ea8;" u2="&#x42c;" k="59" />
+<hkern u1="&#x1ea8;" u2="&#x414;" k="-19" />
+<hkern u1="&#x1ea8;" u2="&#x3c4;" k="56" />
+<hkern u1="&#x1ea8;" u2="&#x3bb;" k="-17" />
+<hkern u1="&#x1ea8;" u2="&#x3a8;" k="47" />
+<hkern u1="&#x1ea8;" u2="&#x3a6;" k="27" />
+<hkern u1="&#x1ea8;" u2="&#x1af;" k="18" />
+<hkern u1="&#x1ea8;" u2="w" k="33" />
+<hkern u1="&#x1ea8;" u2="t" k="17" />
+<hkern u1="&#x1ea8;" u2="&#x3f;" k="80" />
+<hkern u1="&#x1ea9;" u2="&#x50f;" k="15" />
+<hkern u1="&#x1ea9;" u2="&#x507;" k="13" />
+<hkern u1="&#x1ea9;" u2="&#x505;" k="13" />
+<hkern u1="&#x1ea9;" u2="&#x4a1;" k="15" />
+<hkern u1="&#x1ea9;" u2="&#x47f;" k="13" />
+<hkern u1="&#x1ea9;" u2="&#x461;" k="15" />
+<hkern u1="&#x1ea9;" u2="&#x442;" k="16" />
+<hkern u1="&#x1eaa;" g2="T.smcp" k="57" />
+<hkern u1="&#x1eaa;" g2="U.smcp" k="15" />
+<hkern u1="&#x1eaa;" g2="V.smcp" k="51" />
+<hkern u1="&#x1eaa;" g2="W.smcp" k="35" />
+<hkern u1="&#x1eaa;" g2="Y.smcp" k="60" />
+<hkern u1="&#x1eaa;" u2="&#x50f;" k="57" />
+<hkern u1="&#x1eaa;" u2="&#x50e;" k="88" />
+<hkern u1="&#x1eaa;" u2="&#x506;" k="54" />
+<hkern u1="&#x1eaa;" u2="&#x504;" k="80" />
+<hkern u1="&#x1eaa;" u2="&#x4d8;" k="14" />
+<hkern u1="&#x1eaa;" u2="&#x4bd;" k="35" />
+<hkern u1="&#x1eaa;" u2="&#x4bc;" k="152" />
+<hkern u1="&#x1eaa;" u2="&#x4b9;" k="123" />
+<hkern u1="&#x1eaa;" u2="&#x4b8;" k="155" />
+<hkern u1="&#x1eaa;" u2="&#x4a1;" k="126" />
+<hkern u1="&#x1eaa;" u2="&#x442;" k="54" />
+<hkern u1="&#x1eaa;" u2="&#x42c;" k="59" />
+<hkern u1="&#x1eaa;" u2="&#x414;" k="-19" />
+<hkern u1="&#x1eaa;" u2="&#x3c4;" k="56" />
+<hkern u1="&#x1eaa;" u2="&#x3bb;" k="-17" />
+<hkern u1="&#x1eaa;" u2="&#x3a8;" k="47" />
+<hkern u1="&#x1eaa;" u2="&#x3a6;" k="27" />
+<hkern u1="&#x1eaa;" u2="&#x1af;" k="18" />
+<hkern u1="&#x1eaa;" u2="w" k="33" />
+<hkern u1="&#x1eaa;" u2="t" k="17" />
+<hkern u1="&#x1eaa;" u2="&#x3f;" k="80" />
+<hkern u1="&#x1eab;" u2="&#x50f;" k="15" />
+<hkern u1="&#x1eab;" u2="&#x507;" k="13" />
+<hkern u1="&#x1eab;" u2="&#x505;" k="13" />
+<hkern u1="&#x1eab;" u2="&#x4a1;" k="15" />
+<hkern u1="&#x1eab;" u2="&#x47f;" k="13" />
+<hkern u1="&#x1eab;" u2="&#x461;" k="15" />
+<hkern u1="&#x1eab;" u2="&#x442;" k="16" />
+<hkern u1="&#x1eac;" g2="T.smcp" k="57" />
+<hkern u1="&#x1eac;" g2="U.smcp" k="15" />
+<hkern u1="&#x1eac;" g2="V.smcp" k="51" />
+<hkern u1="&#x1eac;" g2="W.smcp" k="35" />
+<hkern u1="&#x1eac;" g2="Y.smcp" k="60" />
+<hkern u1="&#x1eac;" u2="&#x50f;" k="57" />
+<hkern u1="&#x1eac;" u2="&#x50e;" k="88" />
+<hkern u1="&#x1eac;" u2="&#x506;" k="54" />
+<hkern u1="&#x1eac;" u2="&#x504;" k="80" />
+<hkern u1="&#x1eac;" u2="&#x4d8;" k="14" />
+<hkern u1="&#x1eac;" u2="&#x4bd;" k="35" />
+<hkern u1="&#x1eac;" u2="&#x4bc;" k="152" />
+<hkern u1="&#x1eac;" u2="&#x4b9;" k="123" />
+<hkern u1="&#x1eac;" u2="&#x4b8;" k="155" />
+<hkern u1="&#x1eac;" u2="&#x4a1;" k="126" />
+<hkern u1="&#x1eac;" u2="&#x442;" k="54" />
+<hkern u1="&#x1eac;" u2="&#x42c;" k="59" />
+<hkern u1="&#x1eac;" u2="&#x414;" k="-19" />
+<hkern u1="&#x1eac;" u2="&#x3c4;" k="56" />
+<hkern u1="&#x1eac;" u2="&#x3bb;" k="-17" />
+<hkern u1="&#x1eac;" u2="&#x3a8;" k="47" />
+<hkern u1="&#x1eac;" u2="&#x3a6;" k="27" />
+<hkern u1="&#x1eac;" u2="&#x1af;" k="18" />
+<hkern u1="&#x1eac;" u2="w" k="33" />
+<hkern u1="&#x1eac;" u2="t" k="17" />
+<hkern u1="&#x1eac;" u2="&#x3f;" k="80" />
+<hkern u1="&#x1ead;" u2="&#x50f;" k="15" />
+<hkern u1="&#x1ead;" u2="&#x507;" k="13" />
+<hkern u1="&#x1ead;" u2="&#x505;" k="13" />
+<hkern u1="&#x1ead;" u2="&#x4a1;" k="15" />
+<hkern u1="&#x1ead;" u2="&#x47f;" k="13" />
+<hkern u1="&#x1ead;" u2="&#x461;" k="15" />
+<hkern u1="&#x1ead;" u2="&#x442;" k="16" />
+<hkern u1="&#x1eae;" g2="T.smcp" k="57" />
+<hkern u1="&#x1eae;" g2="U.smcp" k="15" />
+<hkern u1="&#x1eae;" g2="V.smcp" k="51" />
+<hkern u1="&#x1eae;" g2="W.smcp" k="35" />
+<hkern u1="&#x1eae;" g2="Y.smcp" k="60" />
+<hkern u1="&#x1eae;" u2="&#x50f;" k="57" />
+<hkern u1="&#x1eae;" u2="&#x50e;" k="88" />
+<hkern u1="&#x1eae;" u2="&#x506;" k="54" />
+<hkern u1="&#x1eae;" u2="&#x504;" k="80" />
+<hkern u1="&#x1eae;" u2="&#x4d8;" k="14" />
+<hkern u1="&#x1eae;" u2="&#x4bd;" k="35" />
+<hkern u1="&#x1eae;" u2="&#x4bc;" k="152" />
+<hkern u1="&#x1eae;" u2="&#x4b9;" k="123" />
+<hkern u1="&#x1eae;" u2="&#x4b8;" k="155" />
+<hkern u1="&#x1eae;" u2="&#x4a1;" k="126" />
+<hkern u1="&#x1eae;" u2="&#x442;" k="54" />
+<hkern u1="&#x1eae;" u2="&#x42c;" k="59" />
+<hkern u1="&#x1eae;" u2="&#x414;" k="-19" />
+<hkern u1="&#x1eae;" u2="&#x3c4;" k="56" />
+<hkern u1="&#x1eae;" u2="&#x3bb;" k="-17" />
+<hkern u1="&#x1eae;" u2="&#x3a8;" k="47" />
+<hkern u1="&#x1eae;" u2="&#x3a6;" k="27" />
+<hkern u1="&#x1eae;" u2="&#x1af;" k="18" />
+<hkern u1="&#x1eae;" u2="w" k="33" />
+<hkern u1="&#x1eae;" u2="t" k="17" />
+<hkern u1="&#x1eae;" u2="&#x3f;" k="80" />
+<hkern u1="&#x1eaf;" u2="&#x50f;" k="15" />
+<hkern u1="&#x1eaf;" u2="&#x507;" k="13" />
+<hkern u1="&#x1eaf;" u2="&#x505;" k="13" />
+<hkern u1="&#x1eaf;" u2="&#x4a1;" k="15" />
+<hkern u1="&#x1eaf;" u2="&#x47f;" k="13" />
+<hkern u1="&#x1eaf;" u2="&#x461;" k="15" />
+<hkern u1="&#x1eaf;" u2="&#x442;" k="16" />
+<hkern u1="&#x1eb0;" g2="T.smcp" k="57" />
+<hkern u1="&#x1eb0;" g2="U.smcp" k="15" />
+<hkern u1="&#x1eb0;" g2="V.smcp" k="51" />
+<hkern u1="&#x1eb0;" g2="W.smcp" k="35" />
+<hkern u1="&#x1eb0;" g2="Y.smcp" k="60" />
+<hkern u1="&#x1eb0;" u2="&#x50f;" k="57" />
+<hkern u1="&#x1eb0;" u2="&#x50e;" k="88" />
+<hkern u1="&#x1eb0;" u2="&#x506;" k="54" />
+<hkern u1="&#x1eb0;" u2="&#x504;" k="80" />
+<hkern u1="&#x1eb0;" u2="&#x4d8;" k="14" />
+<hkern u1="&#x1eb0;" u2="&#x4bd;" k="35" />
+<hkern u1="&#x1eb0;" u2="&#x4bc;" k="152" />
+<hkern u1="&#x1eb0;" u2="&#x4b9;" k="123" />
+<hkern u1="&#x1eb0;" u2="&#x4b8;" k="155" />
+<hkern u1="&#x1eb0;" u2="&#x4a1;" k="126" />
+<hkern u1="&#x1eb0;" u2="&#x442;" k="54" />
+<hkern u1="&#x1eb0;" u2="&#x42c;" k="59" />
+<hkern u1="&#x1eb0;" u2="&#x414;" k="-19" />
+<hkern u1="&#x1eb0;" u2="&#x3c4;" k="56" />
+<hkern u1="&#x1eb0;" u2="&#x3bb;" k="-17" />
+<hkern u1="&#x1eb0;" u2="&#x3a8;" k="47" />
+<hkern u1="&#x1eb0;" u2="&#x3a6;" k="27" />
+<hkern u1="&#x1eb0;" u2="&#x1af;" k="18" />
+<hkern u1="&#x1eb0;" u2="w" k="33" />
+<hkern u1="&#x1eb0;" u2="t" k="17" />
+<hkern u1="&#x1eb0;" u2="&#x3f;" k="80" />
+<hkern u1="&#x1eb1;" u2="&#x50f;" k="15" />
+<hkern u1="&#x1eb1;" u2="&#x507;" k="13" />
+<hkern u1="&#x1eb1;" u2="&#x505;" k="13" />
+<hkern u1="&#x1eb1;" u2="&#x4a1;" k="15" />
+<hkern u1="&#x1eb1;" u2="&#x47f;" k="13" />
+<hkern u1="&#x1eb1;" u2="&#x461;" k="15" />
+<hkern u1="&#x1eb1;" u2="&#x442;" k="16" />
+<hkern u1="&#x1eb2;" g2="T.smcp" k="57" />
+<hkern u1="&#x1eb2;" g2="U.smcp" k="15" />
+<hkern u1="&#x1eb2;" g2="V.smcp" k="51" />
+<hkern u1="&#x1eb2;" g2="W.smcp" k="35" />
+<hkern u1="&#x1eb2;" g2="Y.smcp" k="60" />
+<hkern u1="&#x1eb2;" u2="&#x50f;" k="57" />
+<hkern u1="&#x1eb2;" u2="&#x50e;" k="88" />
+<hkern u1="&#x1eb2;" u2="&#x506;" k="54" />
+<hkern u1="&#x1eb2;" u2="&#x504;" k="80" />
+<hkern u1="&#x1eb2;" u2="&#x4d8;" k="14" />
+<hkern u1="&#x1eb2;" u2="&#x4bd;" k="35" />
+<hkern u1="&#x1eb2;" u2="&#x4bc;" k="152" />
+<hkern u1="&#x1eb2;" u2="&#x4b9;" k="123" />
+<hkern u1="&#x1eb2;" u2="&#x4b8;" k="155" />
+<hkern u1="&#x1eb2;" u2="&#x4a1;" k="126" />
+<hkern u1="&#x1eb2;" u2="&#x442;" k="54" />
+<hkern u1="&#x1eb2;" u2="&#x42c;" k="59" />
+<hkern u1="&#x1eb2;" u2="&#x414;" k="-19" />
+<hkern u1="&#x1eb2;" u2="&#x3c4;" k="56" />
+<hkern u1="&#x1eb2;" u2="&#x3bb;" k="-17" />
+<hkern u1="&#x1eb2;" u2="&#x3a8;" k="47" />
+<hkern u1="&#x1eb2;" u2="&#x3a6;" k="27" />
+<hkern u1="&#x1eb2;" u2="&#x1af;" k="18" />
+<hkern u1="&#x1eb2;" u2="w" k="33" />
+<hkern u1="&#x1eb2;" u2="t" k="17" />
+<hkern u1="&#x1eb2;" u2="&#x3f;" k="80" />
+<hkern u1="&#x1eb3;" u2="&#x50f;" k="15" />
+<hkern u1="&#x1eb3;" u2="&#x507;" k="13" />
+<hkern u1="&#x1eb3;" u2="&#x505;" k="13" />
+<hkern u1="&#x1eb3;" u2="&#x4a1;" k="15" />
+<hkern u1="&#x1eb3;" u2="&#x47f;" k="13" />
+<hkern u1="&#x1eb3;" u2="&#x461;" k="15" />
+<hkern u1="&#x1eb3;" u2="&#x442;" k="16" />
+<hkern u1="&#x1eb4;" g2="T.smcp" k="57" />
+<hkern u1="&#x1eb4;" g2="U.smcp" k="15" />
+<hkern u1="&#x1eb4;" g2="V.smcp" k="51" />
+<hkern u1="&#x1eb4;" g2="W.smcp" k="35" />
+<hkern u1="&#x1eb4;" g2="Y.smcp" k="60" />
+<hkern u1="&#x1eb4;" u2="&#x50f;" k="57" />
+<hkern u1="&#x1eb4;" u2="&#x50e;" k="88" />
+<hkern u1="&#x1eb4;" u2="&#x506;" k="54" />
+<hkern u1="&#x1eb4;" u2="&#x504;" k="80" />
+<hkern u1="&#x1eb4;" u2="&#x4d8;" k="14" />
+<hkern u1="&#x1eb4;" u2="&#x4bd;" k="35" />
+<hkern u1="&#x1eb4;" u2="&#x4bc;" k="152" />
+<hkern u1="&#x1eb4;" u2="&#x4b9;" k="123" />
+<hkern u1="&#x1eb4;" u2="&#x4b8;" k="155" />
+<hkern u1="&#x1eb4;" u2="&#x4a1;" k="126" />
+<hkern u1="&#x1eb4;" u2="&#x442;" k="54" />
+<hkern u1="&#x1eb4;" u2="&#x42c;" k="59" />
+<hkern u1="&#x1eb4;" u2="&#x414;" k="-19" />
+<hkern u1="&#x1eb4;" u2="&#x3c4;" k="56" />
+<hkern u1="&#x1eb4;" u2="&#x3bb;" k="-17" />
+<hkern u1="&#x1eb4;" u2="&#x3a8;" k="47" />
+<hkern u1="&#x1eb4;" u2="&#x3a6;" k="27" />
+<hkern u1="&#x1eb4;" u2="&#x1af;" k="18" />
+<hkern u1="&#x1eb4;" u2="w" k="33" />
+<hkern u1="&#x1eb4;" u2="t" k="17" />
+<hkern u1="&#x1eb4;" u2="&#x3f;" k="80" />
+<hkern u1="&#x1eb5;" u2="&#x50f;" k="15" />
+<hkern u1="&#x1eb5;" u2="&#x507;" k="13" />
+<hkern u1="&#x1eb5;" u2="&#x505;" k="13" />
+<hkern u1="&#x1eb5;" u2="&#x4a1;" k="15" />
+<hkern u1="&#x1eb5;" u2="&#x47f;" k="13" />
+<hkern u1="&#x1eb5;" u2="&#x461;" k="15" />
+<hkern u1="&#x1eb5;" u2="&#x442;" k="16" />
+<hkern u1="&#x1eb6;" g2="T.smcp" k="57" />
+<hkern u1="&#x1eb6;" g2="U.smcp" k="15" />
+<hkern u1="&#x1eb6;" g2="V.smcp" k="51" />
+<hkern u1="&#x1eb6;" g2="W.smcp" k="35" />
+<hkern u1="&#x1eb6;" g2="Y.smcp" k="60" />
+<hkern u1="&#x1eb6;" u2="&#x50f;" k="57" />
+<hkern u1="&#x1eb6;" u2="&#x50e;" k="88" />
+<hkern u1="&#x1eb6;" u2="&#x506;" k="54" />
+<hkern u1="&#x1eb6;" u2="&#x504;" k="80" />
+<hkern u1="&#x1eb6;" u2="&#x4d8;" k="14" />
+<hkern u1="&#x1eb6;" u2="&#x4bd;" k="35" />
+<hkern u1="&#x1eb6;" u2="&#x4bc;" k="152" />
+<hkern u1="&#x1eb6;" u2="&#x4b9;" k="123" />
+<hkern u1="&#x1eb6;" u2="&#x4b8;" k="155" />
+<hkern u1="&#x1eb6;" u2="&#x4a1;" k="126" />
+<hkern u1="&#x1eb6;" u2="&#x442;" k="54" />
+<hkern u1="&#x1eb6;" u2="&#x42c;" k="59" />
+<hkern u1="&#x1eb6;" u2="&#x414;" k="-19" />
+<hkern u1="&#x1eb6;" u2="&#x3c4;" k="56" />
+<hkern u1="&#x1eb6;" u2="&#x3bb;" k="-17" />
+<hkern u1="&#x1eb6;" u2="&#x3a8;" k="47" />
+<hkern u1="&#x1eb6;" u2="&#x3a6;" k="27" />
+<hkern u1="&#x1eb6;" u2="&#x1af;" k="18" />
+<hkern u1="&#x1eb6;" u2="w" k="33" />
+<hkern u1="&#x1eb6;" u2="t" k="17" />
+<hkern u1="&#x1eb6;" u2="&#x3f;" k="80" />
+<hkern u1="&#x1eb7;" u2="&#x50f;" k="15" />
+<hkern u1="&#x1eb7;" u2="&#x507;" k="13" />
+<hkern u1="&#x1eb7;" u2="&#x505;" k="13" />
+<hkern u1="&#x1eb7;" u2="&#x4a1;" k="15" />
+<hkern u1="&#x1eb7;" u2="&#x47f;" k="13" />
+<hkern u1="&#x1eb7;" u2="&#x461;" k="15" />
+<hkern u1="&#x1eb7;" u2="&#x442;" k="16" />
+<hkern u1="&#x1eb8;" g2="V.smcp" k="16" />
+<hkern u1="&#x1eb8;" g2="W.smcp" k="19" />
+<hkern u1="&#x1eb8;" g2="Y.smcp" k="16" />
+<hkern u1="&#x1eb8;" u2="w" k="22" />
+<hkern u1="&#x1eb8;" u2="f" k="18" />
+<hkern u1="&#x1eb9;" u2="&#x442;" k="11" />
+<hkern u1="&#x1eba;" g2="V.smcp" k="16" />
+<hkern u1="&#x1eba;" g2="W.smcp" k="19" />
+<hkern u1="&#x1eba;" g2="Y.smcp" k="16" />
+<hkern u1="&#x1eba;" u2="w" k="22" />
+<hkern u1="&#x1eba;" u2="f" k="18" />
+<hkern u1="&#x1ebb;" u2="&#x442;" k="11" />
+<hkern u1="&#x1ebc;" g2="V.smcp" k="16" />
+<hkern u1="&#x1ebc;" g2="W.smcp" k="19" />
+<hkern u1="&#x1ebc;" g2="Y.smcp" k="16" />
+<hkern u1="&#x1ebc;" u2="w" k="22" />
+<hkern u1="&#x1ebc;" u2="f" k="18" />
+<hkern u1="&#x1ebd;" u2="&#x442;" k="11" />
+<hkern u1="&#x1ebe;" g2="V.smcp" k="16" />
+<hkern u1="&#x1ebe;" g2="W.smcp" k="19" />
+<hkern u1="&#x1ebe;" g2="Y.smcp" k="16" />
+<hkern u1="&#x1ebe;" u2="w" k="22" />
+<hkern u1="&#x1ebe;" u2="f" k="18" />
+<hkern u1="&#x1ebf;" u2="&#x442;" k="11" />
+<hkern u1="&#x1ec0;" g2="V.smcp" k="16" />
+<hkern u1="&#x1ec0;" g2="W.smcp" k="19" />
+<hkern u1="&#x1ec0;" g2="Y.smcp" k="16" />
+<hkern u1="&#x1ec0;" u2="w" k="22" />
+<hkern u1="&#x1ec0;" u2="f" k="18" />
+<hkern u1="&#x1ec1;" u2="&#x442;" k="11" />
+<hkern u1="&#x1ec2;" g2="V.smcp" k="16" />
+<hkern u1="&#x1ec2;" g2="W.smcp" k="19" />
+<hkern u1="&#x1ec2;" g2="Y.smcp" k="16" />
+<hkern u1="&#x1ec2;" u2="w" k="22" />
+<hkern u1="&#x1ec2;" u2="f" k="18" />
+<hkern u1="&#x1ec3;" u2="&#x442;" k="11" />
+<hkern u1="&#x1ec4;" g2="V.smcp" k="16" />
+<hkern u1="&#x1ec4;" g2="W.smcp" k="19" />
+<hkern u1="&#x1ec4;" g2="Y.smcp" k="16" />
+<hkern u1="&#x1ec4;" u2="w" k="22" />
+<hkern u1="&#x1ec4;" u2="f" k="18" />
+<hkern u1="&#x1ec5;" u2="&#x442;" k="11" />
+<hkern u1="&#x1ec6;" g2="V.smcp" k="16" />
+<hkern u1="&#x1ec6;" g2="W.smcp" k="19" />
+<hkern u1="&#x1ec6;" g2="Y.smcp" k="16" />
+<hkern u1="&#x1ec6;" u2="w" k="22" />
+<hkern u1="&#x1ec6;" u2="f" k="18" />
+<hkern u1="&#x1ec7;" u2="&#x442;" k="11" />
+<hkern u1="&#x1ec8;" u2="&#x50e;" k="28" />
+<hkern u1="&#x1ec8;" u2="&#x506;" k="30" />
+<hkern u1="&#x1ec8;" u2="&#x504;" k="29" />
+<hkern u1="&#x1ec8;" u2="&#x4bc;" k="28" />
+<hkern u1="&#x1ec8;" u2="&#x4b9;" k="27" />
+<hkern u1="&#x1ec8;" u2="&#x4b8;" k="28" />
+<hkern u1="&#x1ec8;" u2="&#x434;" k="-21" />
+<hkern u1="&#x1ec8;" u2="&#x414;" k="-21" />
+<hkern u1="&#x1eca;" u2="&#x50e;" k="28" />
+<hkern u1="&#x1eca;" u2="&#x506;" k="30" />
+<hkern u1="&#x1eca;" u2="&#x504;" k="29" />
+<hkern u1="&#x1eca;" u2="&#x4bc;" k="28" />
+<hkern u1="&#x1eca;" u2="&#x4b9;" k="27" />
+<hkern u1="&#x1eca;" u2="&#x4b8;" k="28" />
+<hkern u1="&#x1eca;" u2="&#x434;" k="-21" />
+<hkern u1="&#x1eca;" u2="&#x414;" k="-21" />
+<hkern u1="&#x1ecc;" g2="X.smcp" k="11" />
+<hkern u1="&#x1ecc;" u2="&#x50e;" k="32" />
+<hkern u1="&#x1ecc;" u2="&#x42c;" k="32" />
+<hkern u1="&#x1ecc;" u2="&#x414;" k="33" />
+<hkern u1="&#x1ecc;" u2="&#x3bb;" k="22" />
+<hkern u1="&#x1ecc;" u2="&#x3a3;" k="16" />
+<hkern u1="&#x1ecc;" u2="&#x39e;" k="13" />
+<hkern u1="&#x1ecc;" u2="&#xc6;" k="33" />
+<hkern u1="&#x1ecd;" u2="&#x50f;" k="20" />
+<hkern u1="&#x1ecd;" u2="&#x505;" k="11" />
+<hkern u1="&#x1ecd;" u2="&#x4a1;" k="21" />
+<hkern u1="&#x1ecd;" u2="&#x47f;" k="15" />
+<hkern u1="&#x1ecd;" u2="&#x461;" k="16" />
+<hkern u1="&#x1ecd;" u2="&#x442;" k="22" />
+<hkern u1="&#x1ecd;" u2="&#x3c7;" k="22" />
+<hkern u1="&#x1ecd;" u2="&#x3c4;" k="22" />
+<hkern u1="&#x1ece;" g2="X.smcp" k="11" />
+<hkern u1="&#x1ece;" u2="&#x50e;" k="32" />
+<hkern u1="&#x1ece;" u2="&#x42c;" k="32" />
+<hkern u1="&#x1ece;" u2="&#x414;" k="33" />
+<hkern u1="&#x1ece;" u2="&#x3bb;" k="22" />
+<hkern u1="&#x1ece;" u2="&#x3a3;" k="16" />
+<hkern u1="&#x1ece;" u2="&#x39e;" k="13" />
+<hkern u1="&#x1ece;" u2="&#xc6;" k="33" />
+<hkern u1="&#x1ecf;" u2="&#x50f;" k="20" />
+<hkern u1="&#x1ecf;" u2="&#x505;" k="11" />
+<hkern u1="&#x1ecf;" u2="&#x4a1;" k="21" />
+<hkern u1="&#x1ecf;" u2="&#x47f;" k="15" />
+<hkern u1="&#x1ecf;" u2="&#x461;" k="16" />
+<hkern u1="&#x1ecf;" u2="&#x442;" k="22" />
+<hkern u1="&#x1ecf;" u2="&#x3c7;" k="22" />
+<hkern u1="&#x1ecf;" u2="&#x3c4;" k="22" />
+<hkern u1="&#x1ed0;" g2="X.smcp" k="11" />
+<hkern u1="&#x1ed0;" u2="&#x50e;" k="32" />
+<hkern u1="&#x1ed0;" u2="&#x42c;" k="32" />
+<hkern u1="&#x1ed0;" u2="&#x414;" k="33" />
+<hkern u1="&#x1ed0;" u2="&#x3bb;" k="22" />
+<hkern u1="&#x1ed0;" u2="&#x3a3;" k="16" />
+<hkern u1="&#x1ed0;" u2="&#x39e;" k="13" />
+<hkern u1="&#x1ed0;" u2="&#xc6;" k="33" />
+<hkern u1="&#x1ed1;" u2="&#x50f;" k="20" />
+<hkern u1="&#x1ed1;" u2="&#x505;" k="11" />
+<hkern u1="&#x1ed1;" u2="&#x4a1;" k="21" />
+<hkern u1="&#x1ed1;" u2="&#x47f;" k="15" />
+<hkern u1="&#x1ed1;" u2="&#x461;" k="16" />
+<hkern u1="&#x1ed1;" u2="&#x442;" k="22" />
+<hkern u1="&#x1ed1;" u2="&#x3c7;" k="22" />
+<hkern u1="&#x1ed1;" u2="&#x3c4;" k="22" />
+<hkern u1="&#x1ed2;" g2="X.smcp" k="11" />
+<hkern u1="&#x1ed2;" u2="&#x50e;" k="32" />
+<hkern u1="&#x1ed2;" u2="&#x42c;" k="32" />
+<hkern u1="&#x1ed2;" u2="&#x414;" k="33" />
+<hkern u1="&#x1ed2;" u2="&#x3bb;" k="22" />
+<hkern u1="&#x1ed2;" u2="&#x3a3;" k="16" />
+<hkern u1="&#x1ed2;" u2="&#x39e;" k="13" />
+<hkern u1="&#x1ed2;" u2="&#xc6;" k="33" />
+<hkern u1="&#x1ed3;" u2="&#x50f;" k="20" />
+<hkern u1="&#x1ed3;" u2="&#x505;" k="11" />
+<hkern u1="&#x1ed3;" u2="&#x4a1;" k="21" />
+<hkern u1="&#x1ed3;" u2="&#x47f;" k="15" />
+<hkern u1="&#x1ed3;" u2="&#x461;" k="16" />
+<hkern u1="&#x1ed3;" u2="&#x442;" k="22" />
+<hkern u1="&#x1ed3;" u2="&#x3c7;" k="22" />
+<hkern u1="&#x1ed3;" u2="&#x3c4;" k="22" />
+<hkern u1="&#x1ed4;" g2="X.smcp" k="11" />
+<hkern u1="&#x1ed4;" u2="&#x50e;" k="32" />
+<hkern u1="&#x1ed4;" u2="&#x42c;" k="32" />
+<hkern u1="&#x1ed4;" u2="&#x414;" k="33" />
+<hkern u1="&#x1ed4;" u2="&#x3bb;" k="22" />
+<hkern u1="&#x1ed4;" u2="&#x3a3;" k="16" />
+<hkern u1="&#x1ed4;" u2="&#x39e;" k="13" />
+<hkern u1="&#x1ed4;" u2="&#xc6;" k="33" />
+<hkern u1="&#x1ed5;" u2="&#x50f;" k="20" />
+<hkern u1="&#x1ed5;" u2="&#x505;" k="11" />
+<hkern u1="&#x1ed5;" u2="&#x4a1;" k="21" />
+<hkern u1="&#x1ed5;" u2="&#x47f;" k="15" />
+<hkern u1="&#x1ed5;" u2="&#x461;" k="16" />
+<hkern u1="&#x1ed5;" u2="&#x442;" k="22" />
+<hkern u1="&#x1ed5;" u2="&#x3c7;" k="22" />
+<hkern u1="&#x1ed5;" u2="&#x3c4;" k="22" />
+<hkern u1="&#x1ed6;" g2="X.smcp" k="11" />
+<hkern u1="&#x1ed6;" u2="&#x50e;" k="32" />
+<hkern u1="&#x1ed6;" u2="&#x42c;" k="32" />
+<hkern u1="&#x1ed6;" u2="&#x414;" k="33" />
+<hkern u1="&#x1ed6;" u2="&#x3bb;" k="22" />
+<hkern u1="&#x1ed6;" u2="&#x3a3;" k="16" />
+<hkern u1="&#x1ed6;" u2="&#x39e;" k="13" />
+<hkern u1="&#x1ed6;" u2="&#xc6;" k="33" />
+<hkern u1="&#x1ed7;" u2="&#x50f;" k="20" />
+<hkern u1="&#x1ed7;" u2="&#x505;" k="11" />
+<hkern u1="&#x1ed7;" u2="&#x4a1;" k="21" />
+<hkern u1="&#x1ed7;" u2="&#x47f;" k="15" />
+<hkern u1="&#x1ed7;" u2="&#x461;" k="16" />
+<hkern u1="&#x1ed7;" u2="&#x442;" k="22" />
+<hkern u1="&#x1ed7;" u2="&#x3c7;" k="22" />
+<hkern u1="&#x1ed7;" u2="&#x3c4;" k="22" />
+<hkern u1="&#x1ed8;" g2="X.smcp" k="11" />
+<hkern u1="&#x1ed8;" u2="&#x50e;" k="32" />
+<hkern u1="&#x1ed8;" u2="&#x42c;" k="32" />
+<hkern u1="&#x1ed8;" u2="&#x414;" k="33" />
+<hkern u1="&#x1ed8;" u2="&#x3bb;" k="22" />
+<hkern u1="&#x1ed8;" u2="&#x3a3;" k="16" />
+<hkern u1="&#x1ed8;" u2="&#x39e;" k="13" />
+<hkern u1="&#x1ed8;" u2="&#xc6;" k="33" />
+<hkern u1="&#x1ed9;" u2="&#x50f;" k="20" />
+<hkern u1="&#x1ed9;" u2="&#x505;" k="11" />
+<hkern u1="&#x1ed9;" u2="&#x4a1;" k="21" />
+<hkern u1="&#x1ed9;" u2="&#x47f;" k="15" />
+<hkern u1="&#x1ed9;" u2="&#x461;" k="16" />
+<hkern u1="&#x1ed9;" u2="&#x442;" k="22" />
+<hkern u1="&#x1ed9;" u2="&#x3c7;" k="22" />
+<hkern u1="&#x1ed9;" u2="&#x3c4;" k="22" />
+<hkern u1="&#x1ee1;" u2="&#x50f;" k="20" />
+<hkern u1="&#x1ee1;" u2="&#x505;" k="11" />
+<hkern u1="&#x1ee1;" u2="&#x4a1;" k="21" />
+<hkern u1="&#x1ee1;" u2="&#x47f;" k="15" />
+<hkern u1="&#x1ee1;" u2="&#x461;" k="16" />
+<hkern u1="&#x1ee1;" u2="&#x442;" k="22" />
+<hkern u1="&#x1ee1;" u2="&#x3c7;" k="22" />
+<hkern u1="&#x1ee1;" u2="&#x3c4;" k="22" />
+<hkern u1="&#x1ef2;" g2="Q.smcp" k="53" />
+<hkern u1="&#x1ef2;" g2="T.smcp" k="13" />
+<hkern u1="&#x1ef2;" g2="W.smcp" k="13" />
+<hkern u1="&#x1ef2;" g2="X.smcp" k="17" />
+<hkern u1="&#x1ef2;" u2="&#x2022;" k="45" />
+<hkern u1="&#x1ef2;" u2="&#x3c9;" k="57" />
+<hkern u1="&#x1ef2;" u2="&#x3c8;" k="38" />
+<hkern u1="&#x1ef2;" u2="&#x3c7;" k="63" />
+<hkern u1="&#x1ef2;" u2="&#x3c6;" k="53" />
+<hkern u1="&#x1ef2;" u2="&#x3c4;" k="23" />
+<hkern u1="&#x1ef2;" u2="&#x3c1;" k="70" />
+<hkern u1="&#x1ef2;" u2="&#x3c0;" k="24" />
+<hkern u1="&#x1ef2;" u2="&#x3b9;" k="42" />
+<hkern u1="&#x1ef2;" u2="&#x3b8;" k="23" />
+<hkern u1="&#x1ef2;" u2="&#x3b6;" k="-13" />
+<hkern u1="&#x1ef2;" u2="&#x3b5;" k="58" />
+<hkern u1="&#x1ef2;" u2="&#x3b4;" k="18" />
+<hkern u1="&#x1ef2;" u2="&#x3b2;" k="22" />
+<hkern u1="&#x1ef2;" u2="&#x3a6;" k="48" />
+<hkern u1="&#x1ef2;" u2="&#xf8;" k="64" />
+<hkern u1="&#x1ef2;" u2="&#xe6;" k="63" />
+<hkern u1="&#x1ef2;" u2="&#xc6;" k="96" />
+<hkern u1="&#x1ef2;" u2="&#xbb;" k="51" />
+<hkern u1="&#x1ef2;" u2="&#xab;" k="82" />
+<hkern u1="&#x1ef2;" u2="&#x7d;" k="-19" />
+<hkern u1="&#x1ef2;" u2="t" k="22" />
+<hkern u1="&#x1ef2;" u2="r" k="40" />
+<hkern u1="&#x1ef2;" u2="f" k="22" />
+<hkern u1="&#x1ef2;" u2="]" k="-18" />
+<hkern u1="&#x1ef2;" u2="&#x2a;" k="49" />
+<hkern u1="&#x1ef2;" u2="&#x29;" k="-20" />
+<hkern u1="&#x1ef2;" u2="&#x26;" k="30" />
+<hkern u1="&#x1ef3;" u2="&#x47b;" k="15" />
+<hkern u1="&#x1ef3;" u2="&#x434;" k="56" />
+<hkern u1="&#x1ef3;" u2="&#x3c4;" k="-12" />
+<hkern u1="&#x1ef3;" u2="&#x3c1;" k="22" />
+<hkern u1="&#x1ef3;" u2="&#x3c0;" k="-11" />
+<hkern u1="&#x1ef3;" u2="&#x3b4;" k="11" />
+<hkern u1="&#x1ef3;" u2="f" k="-13" />
+<hkern u1="&#x1ef4;" g2="Q.smcp" k="53" />
+<hkern u1="&#x1ef4;" g2="T.smcp" k="13" />
+<hkern u1="&#x1ef4;" g2="W.smcp" k="13" />
+<hkern u1="&#x1ef4;" g2="X.smcp" k="17" />
+<hkern u1="&#x1ef4;" u2="&#x2022;" k="45" />
+<hkern u1="&#x1ef4;" u2="&#x3c9;" k="57" />
+<hkern u1="&#x1ef4;" u2="&#x3c8;" k="38" />
+<hkern u1="&#x1ef4;" u2="&#x3c7;" k="63" />
+<hkern u1="&#x1ef4;" u2="&#x3c6;" k="53" />
+<hkern u1="&#x1ef4;" u2="&#x3c4;" k="23" />
+<hkern u1="&#x1ef4;" u2="&#x3c1;" k="70" />
+<hkern u1="&#x1ef4;" u2="&#x3c0;" k="24" />
+<hkern u1="&#x1ef4;" u2="&#x3b9;" k="42" />
+<hkern u1="&#x1ef4;" u2="&#x3b8;" k="23" />
+<hkern u1="&#x1ef4;" u2="&#x3b6;" k="-13" />
+<hkern u1="&#x1ef4;" u2="&#x3b5;" k="58" />
+<hkern u1="&#x1ef4;" u2="&#x3b4;" k="18" />
+<hkern u1="&#x1ef4;" u2="&#x3b2;" k="22" />
+<hkern u1="&#x1ef4;" u2="&#x3a6;" k="48" />
+<hkern u1="&#x1ef4;" u2="&#xf8;" k="64" />
+<hkern u1="&#x1ef4;" u2="&#xe6;" k="63" />
+<hkern u1="&#x1ef4;" u2="&#xc6;" k="96" />
+<hkern u1="&#x1ef4;" u2="&#xbb;" k="51" />
+<hkern u1="&#x1ef4;" u2="&#xab;" k="82" />
+<hkern u1="&#x1ef4;" u2="&#x7d;" k="-19" />
+<hkern u1="&#x1ef4;" u2="t" k="22" />
+<hkern u1="&#x1ef4;" u2="r" k="40" />
+<hkern u1="&#x1ef4;" u2="f" k="22" />
+<hkern u1="&#x1ef4;" u2="]" k="-18" />
+<hkern u1="&#x1ef4;" u2="&#x2a;" k="49" />
+<hkern u1="&#x1ef4;" u2="&#x29;" k="-20" />
+<hkern u1="&#x1ef4;" u2="&#x26;" k="30" />
+<hkern u1="&#x1ef5;" u2="&#x47b;" k="15" />
+<hkern u1="&#x1ef5;" u2="&#x434;" k="56" />
+<hkern u1="&#x1ef5;" u2="&#x3c4;" k="-12" />
+<hkern u1="&#x1ef5;" u2="&#x3c1;" k="22" />
+<hkern u1="&#x1ef5;" u2="&#x3c0;" k="-11" />
+<hkern u1="&#x1ef5;" u2="&#x3b4;" k="11" />
+<hkern u1="&#x1ef5;" u2="f" k="-13" />
+<hkern u1="&#x1ef6;" g2="Q.smcp" k="53" />
+<hkern u1="&#x1ef6;" g2="T.smcp" k="13" />
+<hkern u1="&#x1ef6;" g2="W.smcp" k="13" />
+<hkern u1="&#x1ef6;" g2="X.smcp" k="17" />
+<hkern u1="&#x1ef6;" u2="&#x2022;" k="45" />
+<hkern u1="&#x1ef6;" u2="&#x3c9;" k="57" />
+<hkern u1="&#x1ef6;" u2="&#x3c8;" k="38" />
+<hkern u1="&#x1ef6;" u2="&#x3c7;" k="63" />
+<hkern u1="&#x1ef6;" u2="&#x3c6;" k="53" />
+<hkern u1="&#x1ef6;" u2="&#x3c4;" k="23" />
+<hkern u1="&#x1ef6;" u2="&#x3c1;" k="70" />
+<hkern u1="&#x1ef6;" u2="&#x3c0;" k="24" />
+<hkern u1="&#x1ef6;" u2="&#x3b9;" k="42" />
+<hkern u1="&#x1ef6;" u2="&#x3b8;" k="23" />
+<hkern u1="&#x1ef6;" u2="&#x3b6;" k="-13" />
+<hkern u1="&#x1ef6;" u2="&#x3b5;" k="58" />
+<hkern u1="&#x1ef6;" u2="&#x3b4;" k="18" />
+<hkern u1="&#x1ef6;" u2="&#x3b2;" k="22" />
+<hkern u1="&#x1ef6;" u2="&#x3a6;" k="48" />
+<hkern u1="&#x1ef6;" u2="&#xf8;" k="64" />
+<hkern u1="&#x1ef6;" u2="&#xe6;" k="63" />
+<hkern u1="&#x1ef6;" u2="&#xc6;" k="96" />
+<hkern u1="&#x1ef6;" u2="&#xbb;" k="51" />
+<hkern u1="&#x1ef6;" u2="&#xab;" k="82" />
+<hkern u1="&#x1ef6;" u2="&#x7d;" k="-19" />
+<hkern u1="&#x1ef6;" u2="t" k="22" />
+<hkern u1="&#x1ef6;" u2="r" k="40" />
+<hkern u1="&#x1ef6;" u2="f" k="22" />
+<hkern u1="&#x1ef6;" u2="]" k="-18" />
+<hkern u1="&#x1ef6;" u2="&#x2a;" k="49" />
+<hkern u1="&#x1ef6;" u2="&#x29;" k="-20" />
+<hkern u1="&#x1ef6;" u2="&#x26;" k="30" />
+<hkern u1="&#x1ef7;" u2="&#x47b;" k="15" />
+<hkern u1="&#x1ef7;" u2="&#x434;" k="56" />
+<hkern u1="&#x1ef7;" u2="&#x3c4;" k="-12" />
+<hkern u1="&#x1ef7;" u2="&#x3c1;" k="22" />
+<hkern u1="&#x1ef7;" u2="&#x3c0;" k="-11" />
+<hkern u1="&#x1ef7;" u2="&#x3b4;" k="11" />
+<hkern u1="&#x1ef7;" u2="f" k="-13" />
+<hkern u1="&#x1ef8;" g2="Q.smcp" k="53" />
+<hkern u1="&#x1ef8;" g2="T.smcp" k="13" />
+<hkern u1="&#x1ef8;" g2="W.smcp" k="13" />
+<hkern u1="&#x1ef8;" g2="X.smcp" k="17" />
+<hkern u1="&#x1ef8;" u2="&#x2022;" k="45" />
+<hkern u1="&#x1ef8;" u2="&#x3c9;" k="57" />
+<hkern u1="&#x1ef8;" u2="&#x3c8;" k="38" />
+<hkern u1="&#x1ef8;" u2="&#x3c7;" k="63" />
+<hkern u1="&#x1ef8;" u2="&#x3c6;" k="53" />
+<hkern u1="&#x1ef8;" u2="&#x3c4;" k="23" />
+<hkern u1="&#x1ef8;" u2="&#x3c1;" k="70" />
+<hkern u1="&#x1ef8;" u2="&#x3c0;" k="24" />
+<hkern u1="&#x1ef8;" u2="&#x3b9;" k="42" />
+<hkern u1="&#x1ef8;" u2="&#x3b8;" k="23" />
+<hkern u1="&#x1ef8;" u2="&#x3b6;" k="-13" />
+<hkern u1="&#x1ef8;" u2="&#x3b5;" k="58" />
+<hkern u1="&#x1ef8;" u2="&#x3b4;" k="18" />
+<hkern u1="&#x1ef8;" u2="&#x3b2;" k="22" />
+<hkern u1="&#x1ef8;" u2="&#x3a6;" k="48" />
+<hkern u1="&#x1ef8;" u2="&#xf8;" k="64" />
+<hkern u1="&#x1ef8;" u2="&#xe6;" k="63" />
+<hkern u1="&#x1ef8;" u2="&#xc6;" k="96" />
+<hkern u1="&#x1ef8;" u2="&#xbb;" k="51" />
+<hkern u1="&#x1ef8;" u2="&#xab;" k="82" />
+<hkern u1="&#x1ef8;" u2="&#x7d;" k="-19" />
+<hkern u1="&#x1ef8;" u2="t" k="22" />
+<hkern u1="&#x1ef8;" u2="r" k="40" />
+<hkern u1="&#x1ef8;" u2="f" k="22" />
+<hkern u1="&#x1ef8;" u2="]" k="-18" />
+<hkern u1="&#x1ef8;" u2="&#x2a;" k="49" />
+<hkern u1="&#x1ef8;" u2="&#x29;" k="-20" />
+<hkern u1="&#x1ef8;" u2="&#x26;" k="30" />
+<hkern u1="&#x1ef9;" u2="&#x47b;" k="15" />
+<hkern u1="&#x1ef9;" u2="&#x434;" k="56" />
+<hkern u1="&#x1ef9;" u2="&#x3c4;" k="-12" />
+<hkern u1="&#x1ef9;" u2="&#x3c1;" k="22" />
+<hkern u1="&#x1ef9;" u2="&#x3c0;" k="-11" />
+<hkern u1="&#x1ef9;" u2="&#x3b4;" k="11" />
+<hkern u1="&#x1ef9;" u2="f" k="-13" />
+<hkern u1="&#x1f4d;" g2="X.smcp" k="11" />
+<hkern u1="&#x1f4d;" u2="&#x50e;" k="32" />
+<hkern u1="&#x1f4d;" u2="&#x42c;" k="32" />
+<hkern u1="&#x1f4d;" u2="&#x414;" k="33" />
+<hkern u1="&#x1f4d;" u2="&#x3bb;" k="22" />
+<hkern u1="&#x1f4d;" u2="&#x3a3;" k="16" />
+<hkern u1="&#x1f4d;" u2="&#x39e;" k="13" />
+<hkern u1="&#x1f4d;" u2="&#xc6;" k="33" />
+<hkern u1="&#x2018;" u2="w" k="-11" />
+<hkern u1="&#x2019;" u2="w" k="-11" />
+<hkern u1="&#x201b;" u2="w" k="-11" />
+<hkern u1="&#x201c;" u2="w" k="-11" />
+<hkern u1="&#x201d;" u2="w" k="-11" />
+<hkern u1="&#x2032;" u2="w" k="-11" />
+<hkern u1="&#x2033;" u2="w" k="-11" />
+<hkern g1="Z.smcp" g2="Q.smcp" k="16" />
+<hkern g1="Y.smcp" g2="Q.smcp" k="21" />
+<hkern g1="Y.smcp" g2="T.smcp" k="-15" />
+<hkern g1="Y.smcp" g2="V.smcp" k="-16" />
+<hkern g1="Y.smcp" g2="W.smcp" k="-13" />
+<hkern g1="Y.smcp" g2="Y.smcp" k="-16" />
+<hkern g1="X.smcp" g2="Q.smcp" k="21" />
+<hkern g1="W.smcp" g2="T.smcp" k="-14" />
+<hkern g1="V.smcp" g2="Q.smcp" k="16" />
+<hkern g1="T.smcp" g2="Q.smcp" k="20" />
+<hkern g1="T.smcp" g2="S.smcp" k="11" />
+<hkern g1="T.smcp" g2="T.smcp" k="-14" />
+<hkern g1="T.smcp" g2="V.smcp" k="-13" />
+<hkern g1="T.smcp" g2="Y.smcp" k="-13" />
+<hkern g1="R.smcp" g2="T.smcp" k="14" />
+<hkern g1="R.smcp" g2="V.smcp" k="15" />
+<hkern g1="R.smcp" g2="W.smcp" k="11" />
+<hkern g1="R.smcp" g2="Y.smcp" k="18" />
+<hkern g1="Q.smcp" g2="T.smcp" k="23" />
+<hkern g1="Q.smcp" g2="V.smcp" k="21" />
+<hkern g1="Q.smcp" g2="W.smcp" k="15" />
+<hkern g1="Q.smcp" g2="Y.smcp" k="27" />
+<hkern g1="O.smcp" g2="T.smcp" k="18" />
+<hkern g1="O.smcp" g2="V.smcp" k="15" />
+<hkern g1="O.smcp" g2="X.smcp" k="20" />
+<hkern g1="O.smcp" g2="Y.smcp" k="22" />
+<hkern g1="L.smcp" g2="Q.smcp" k="16" />
+<hkern g1="L.smcp" g2="T.smcp" k="69" />
+<hkern g1="L.smcp" g2="U.smcp" k="20" />
+<hkern g1="L.smcp" g2="V.smcp" k="73" />
+<hkern g1="L.smcp" g2="W.smcp" k="43" />
+<hkern g1="L.smcp" g2="Y.smcp" k="76" />
+<hkern g1="K.smcp" g2="Q.smcp" k="21" />
+<hkern g1="D.smcp" g2="V.smcp" k="18" />
+<hkern g1="D.smcp" g2="W.smcp" k="11" />
+<hkern g1="A.smcp" g2="Q.smcp" k="14" />
+<hkern g1="A.smcp" g2="T.smcp" k="64" />
+<hkern g1="A.smcp" g2="U.smcp" k="20" />
+<hkern g1="A.smcp" g2="V.smcp" k="57" />
+<hkern g1="A.smcp" g2="W.smcp" k="40" />
+<hkern g1="A.smcp" g2="Y.smcp" k="65" />
+<hkern g1="comma,period,colon,quotesinglbase,quotedblbase,uni2025,ellipsis" 	g2="quotedbl,quotesingle,uni02BC,quoteleft,quoteright,quotereversed,quotedblleft,quotedblright,minute,second" 	k="282" />
+<hkern g1="B,Beta,uni0412" 	g2="T,Tcommaaccent,Tcaron,uni0402,uni040B,uni0422,uni04A0,uni04AC,uni04B4" 	k="27" />
+<hkern g1="B,Beta,uni0412" 	g2="V,uni0474,uni0476" 	k="24" />
+<hkern g1="B,Beta,uni0412" 	g2="Y,Yacute,Ycircumflex,Ydieresis,Upsilontonos,Upsilon,Upsilondieresis,uni04AE,uni04B0,Ygrave,uni1EF4,uni1EF6,uni1EF8" 	k="55" />
+<hkern g1="B,Beta,uni0412" 	g2="uni040E,uni0423,uni04EE,uni04F0,uni04F2" 	k="13" />
+<hkern g1="C,Ccedilla,Cacute,Ccircumflex,uni010A,Ccaron,uni0421,uni04AA" 	g2="T,Tcommaaccent,Tcaron,uni0402,uni040B,uni0422,uni04A0,uni04AC,uni04B4" 	k="29" />
+<hkern g1="D,O,Eth,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Dcaron,Dcroat,Omacron,Obreve,Ohungarumlaut,Omicrontonos,Theta,Omicron,uni041E,uni04E6,uni1ECC,uni1ECE,uni1ED0,uni1ED2,uni1ED4,uni1ED6,uni1ED8,uni1F4D" 	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute,Alphatonos,Alpha,Delta,Lambda,uni0410,uni0466,uni04D0,uni04D2,uni1E00,uni1EA0,uni1EA2,uni1EA4,uni1EA6,uni1EA8,uni1EAA,uni1EAC,uni1EAE,uni1EB0,uni1EB2,uni1EB4,uni1EB6" 	k="21" />
+<hkern g1="D,O,Eth,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Dcaron,Dcroat,Omacron,Obreve,Ohungarumlaut,Omicrontonos,Theta,Omicron,uni041E,uni04E6,uni1ECC,uni1ECE,uni1ED0,uni1ED2,uni1ED4,uni1ED6,uni1ED8,uni1F4D" 	g2="T,Tcommaaccent,Tcaron,uni0402,uni040B,uni0422,uni04A0,uni04AC,uni04B4" 	k="27" />
+<hkern g1="D,O,Eth,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Dcaron,Dcroat,Omacron,Obreve,Ohungarumlaut,Omicrontonos,Theta,Omicron,uni041E,uni04E6,uni1ECC,uni1ECE,uni1ED0,uni1ED2,uni1ED4,uni1ED6,uni1ED8,uni1F4D" 	g2="V,uni0474,uni0476" 	k="22" />
+<hkern g1="D,O,Eth,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Dcaron,Dcroat,Omacron,Obreve,Ohungarumlaut,Omicrontonos,Theta,Omicron,uni041E,uni04E6,uni1ECC,uni1ECE,uni1ED0,uni1ED2,uni1ED4,uni1ED6,uni1ED8,uni1F4D" 	g2="Y,Yacute,Ycircumflex,Ydieresis,Upsilontonos,Upsilon,Upsilondieresis,uni04AE,uni04B0,Ygrave,uni1EF4,uni1EF6,uni1EF8" 	k="43" />
+<hkern g1="D,O,Eth,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Dcaron,Dcroat,Omacron,Obreve,Ohungarumlaut,Omicrontonos,Theta,Omicron,uni041E,uni04E6,uni1ECC,uni1ECE,uni1ED0,uni1ED2,uni1ED4,uni1ED6,uni1ED8,uni1F4D" 	g2="comma,period,colon,quotesinglbase,quotedblbase,uni2025,ellipsis" 	k="121" />
+<hkern g1="D,O,Eth,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Dcaron,Dcroat,Omacron,Obreve,Ohungarumlaut,Omicrontonos,Theta,Omicron,uni041E,uni04E6,uni1ECC,uni1ECE,uni1ED0,uni1ED2,uni1ED4,uni1ED6,uni1ED8,uni1F4D" 	g2="X,Chi,uni0416,uni0425,uni0496,uni04B2,uni04C1,uni04DC,uni04FC" 	k="22" />
+<hkern g1="D,O,Eth,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Dcaron,Dcroat,Omacron,Obreve,Ohungarumlaut,Omicrontonos,Theta,Omicron,uni041E,uni04E6,uni1ECC,uni1ECE,uni1ED0,uni1ED2,uni1ED4,uni1ED6,uni1ED8,uni1F4D" 	g2="Z,Zacute,Zdotaccent,Zcaron,Zeta" 	k="23" />
+<hkern g1="D,O,Eth,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Dcaron,Dcroat,Omacron,Obreve,Ohungarumlaut,Omicrontonos,Theta,Omicron,uni041E,uni04E6,uni1ECC,uni1ECE,uni1ED0,uni1ED2,uni1ED4,uni1ED6,uni1ED8,uni1F4D" 	g2="uni0409,uni041B,uni04C5,uni0508,uni0512" 	k="31" />
+<hkern g1="E,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,Epsilontonos,Epsilon,uni0400,uni0401,uni0415,uni04D6,uni1EB8,uni1EBA,uni1EBC,uni1EBE,uni1EC0,uni1EC2,uni1EC4,uni1EC6" 	g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,cacute,ccircumflex,uni010B,ccaron,dcaron,emacron,ebreve,edotaccent,eogonek,ecaron,gcircumflex,gbreve,uni0121,gcommaaccent,oe,ohorn,alphatonos,alpha,sigma1,sigma,uni0435,uni0441,uni0444,uni0450,uni0451,uni0454,uni0479,uni047D,uni0481,uni04A9,uni04AB,uni04D7,uni04D9,uni04DB,uni04E9,uni0501,uni0502,uni0503,uni050D,uni1EB9,uni1EBB,uni1EBD,uni1EBF,uni1EC1,uni1EC3,uni1EC5,uni1EC7,uni1EDB,uni1EDD,uni1EDF,uni1EE3" 	k="19" />
+<hkern g1="E,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,Epsilontonos,Epsilon,uni0400,uni0401,uni0415,uni04D6,uni1EB8,uni1EBA,uni1EBC,uni1EBE,uni1EC0,uni1EC2,uni1EC4,uni1EC6" 	g2="o,ograve,oacute,ocircumflex,otilde,odieresis,omacron,obreve,ohungarumlaut,omicron,omicrontonos,uni043E,uni0473,uni04E7,uni04EB,uni1ECD,uni1ECF,uni1ED1,uni1ED3,uni1ED5,uni1ED7,uni1ED9,uni1EE1" 	k="19" />
+<hkern g1="E,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,Epsilontonos,Epsilon,uni0400,uni0401,uni0415,uni04D6,uni1EB8,uni1EBA,uni1EBC,uni1EBE,uni1EC0,uni1EC2,uni1EC4,uni1EC6" 	g2="T,Tcommaaccent,Tcaron,uni0402,uni040B,uni0422,uni04A0,uni04AC,uni04B4" 	k="-20" />
+<hkern g1="E,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,Epsilontonos,Epsilon,uni0400,uni0401,uni0415,uni04D6,uni1EB8,uni1EBA,uni1EBC,uni1EBE,uni1EC0,uni1EC2,uni1EC4,uni1EC6" 	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,upsilondieresistonos,upsilon,upsilondieresis,upsilontonos,uni1EE5,uni1EE7,uni1EE9,uni1EEB,uni1EED,uni1EEF,uni1EF1" 	k="17" />
+<hkern g1="E,Egrave,Eacute,Ecircumflex,Edieresis,Emacron,Ebreve,Edotaccent,Eogonek,Ecaron,Epsilontonos,Epsilon,uni0400,uni0401,uni0415,uni04D6,uni1EB8,uni1EBA,uni1EBC,uni1EBE,uni1EC0,uni1EC2,uni1EC4,uni1EC6" 	g2="v,y,yacute,ydieresis,ycircumflex,gamma,nu,uni0443,uni045E,uni0475,uni0477,uni04AF,uni04EF,uni04F1,uni04F3,ygrave,uni1EF5,uni1EF7,uni1EF9" 	k="26" />
+<hkern g1="H,I,M,N,Igrave,Iacute,Icircumflex,Idieresis,Ntilde,Hcircumflex,Itilde,Imacron,Ibreve,Iogonek,Idotaccent,Nacute,Ncommaaccent,Ncaron,Etatonos,Iotatonos,Eta,Iota,Mu,Nu,Iotadieresis,uni0406,uni0407,uni040F,uni0418,uni041B,uni041C,uni041D,uni0426,uni0428,uni04A2,uni04C0,uni04C9,uni04CD,uni04CF,uni1E3E,uni1EC8,uni1ECA" 	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute,Alphatonos,Alpha,Delta,Lambda,uni0410,uni0466,uni04D0,uni04D2,uni1E00,uni1EA0,uni1EA2,uni1EA4,uni1EA6,uni1EA8,uni1EAA,uni1EAC,uni1EAE,uni1EB0,uni1EB2,uni1EB4,uni1EB6" 	k="-18" />
+<hkern g1="H,I,M,N,Igrave,Iacute,Icircumflex,Idieresis,Ntilde,Hcircumflex,Itilde,Imacron,Ibreve,Iogonek,Idotaccent,Nacute,Ncommaaccent,Ncaron,Etatonos,Iotatonos,Eta,Iota,Mu,Nu,Iotadieresis,uni0406,uni0407,uni040F,uni0418,uni041B,uni041C,uni041D,uni0426,uni0428,uni04A2,uni04C0,uni04C9,uni04CD,uni04CF,uni1E3E,uni1EC8,uni1ECA" 	g2="T,Tcommaaccent,Tcaron,uni0402,uni040B,uni0422,uni04A0,uni04AC,uni04B4" 	k="29" />
+<hkern g1="H,I,M,N,Igrave,Iacute,Icircumflex,Idieresis,Ntilde,Hcircumflex,Itilde,Imacron,Ibreve,Iogonek,Idotaccent,Nacute,Ncommaaccent,Ncaron,Etatonos,Iotatonos,Eta,Iota,Mu,Nu,Iotadieresis,uni0406,uni0407,uni040F,uni0418,uni041B,uni041C,uni041D,uni0426,uni0428,uni04A2,uni04C0,uni04C9,uni04CD,uni04CF,uni1E3E,uni1EC8,uni1ECA" 	g2="Y,Yacute,Ycircumflex,Ydieresis,Upsilontonos,Upsilon,Upsilondieresis,uni04AE,uni04B0,Ygrave,uni1EF4,uni1EF6,uni1EF8" 	k="28" />
+<hkern g1="H,I,M,N,Igrave,Iacute,Icircumflex,Idieresis,Ntilde,Hcircumflex,Itilde,Imacron,Ibreve,Iogonek,Idotaccent,Nacute,Ncommaaccent,Ncaron,Etatonos,Iotatonos,Eta,Iota,Mu,Nu,Iotadieresis,uni0406,uni0407,uni040F,uni0418,uni041B,uni041C,uni041D,uni0426,uni0428,uni04A2,uni04C0,uni04C9,uni04CD,uni04CF,uni1E3E,uni1EC8,uni1ECA" 	g2="X,Chi,uni0416,uni0425,uni0496,uni04B2,uni04C1,uni04DC,uni04FC" 	k="-17" />
+<hkern g1="H,I,M,N,Igrave,Iacute,Icircumflex,Idieresis,Ntilde,Hcircumflex,Itilde,Imacron,Ibreve,Iogonek,Idotaccent,Nacute,Ncommaaccent,Ncaron,Etatonos,Iotatonos,Eta,Iota,Mu,Nu,Iotadieresis,uni0406,uni0407,uni040F,uni0418,uni041B,uni041C,uni041D,uni0426,uni0428,uni04A2,uni04C0,uni04C9,uni04CD,uni04CF,uni1E3E,uni1EC8,uni1ECA" 	g2="uni0409,uni041B,uni04C5,uni0508,uni0512" 	k="-17" />
+<hkern g1="H,I,M,N,Igrave,Iacute,Icircumflex,Idieresis,Ntilde,Hcircumflex,Itilde,Imacron,Ibreve,Iogonek,Idotaccent,Nacute,Ncommaaccent,Ncaron,Etatonos,Iotatonos,Eta,Iota,Mu,Nu,Iotadieresis,uni0406,uni0407,uni040F,uni0418,uni041B,uni041C,uni041D,uni0426,uni0428,uni04A2,uni04C0,uni04C9,uni04CD,uni04CF,uni1E3E,uni1EC8,uni1ECA" 	g2="uni0427,uni04B6,uni04CB,uni04F4" 	k="28" />
+<hkern g1="H,I,M,N,Igrave,Iacute,Icircumflex,Idieresis,Ntilde,Hcircumflex,Itilde,Imacron,Ibreve,Iogonek,Idotaccent,Nacute,Ncommaaccent,Ncaron,Etatonos,Iotatonos,Eta,Iota,Mu,Nu,Iotadieresis,uni0406,uni0407,uni040F,uni0418,uni041B,uni041C,uni041D,uni0426,uni0428,uni04A2,uni04C0,uni04C9,uni04CD,uni04CF,uni1E3E,uni1EC8,uni1ECA" 	g2="uni043B,uni0459,uni04C6,uni0513" 	k="-17" />
+<hkern g1="H,I,M,N,Igrave,Iacute,Icircumflex,Idieresis,Ntilde,Hcircumflex,Itilde,Imacron,Ibreve,Iogonek,Idotaccent,Nacute,Ncommaaccent,Ncaron,Etatonos,Iotatonos,Eta,Iota,Mu,Nu,Iotadieresis,uni0406,uni0407,uni040F,uni0418,uni041B,uni041C,uni041D,uni0426,uni0428,uni04A2,uni04C0,uni04C9,uni04CD,uni04CF,uni1E3E,uni1EC8,uni1ECA" 	g2="uni0447,uni04B7,uni04CC,uni04F5" 	k="27" />
+<hkern g1="J,U,Ugrave,Uacute,Ucircumflex,Udieresis,Jcircumflex,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,uni0408,uni1EE4,uni1EE6" 	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute,Alphatonos,Alpha,Delta,Lambda,uni0410,uni0466,uni04D0,uni04D2,uni1E00,uni1EA0,uni1EA2,uni1EA4,uni1EA6,uni1EA8,uni1EAA,uni1EAC,uni1EAE,uni1EB0,uni1EB2,uni1EB4,uni1EB6" 	k="22" />
+<hkern g1="K,Kcommaaccent,Kappa,uni040C,uni041A,uni049A,uni049C,uni049E,uni04A0" 	g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,cacute,ccircumflex,uni010B,ccaron,dcaron,emacron,ebreve,edotaccent,eogonek,ecaron,gcircumflex,gbreve,uni0121,gcommaaccent,oe,ohorn,alphatonos,alpha,sigma1,sigma,uni0435,uni0441,uni0444,uni0450,uni0451,uni0454,uni0479,uni047D,uni0481,uni04A9,uni04AB,uni04D7,uni04D9,uni04DB,uni04E9,uni0501,uni0502,uni0503,uni050D,uni1EB9,uni1EBB,uni1EBD,uni1EBF,uni1EC1,uni1EC3,uni1EC5,uni1EC7,uni1EDB,uni1EDD,uni1EDF,uni1EE3" 	k="26" />
+<hkern g1="K,Kcommaaccent,Kappa,uni040C,uni041A,uni049A,uni049C,uni049E,uni04A0" 	g2="o,ograve,oacute,ocircumflex,otilde,odieresis,omacron,obreve,ohungarumlaut,omicron,omicrontonos,uni043E,uni0473,uni04E7,uni04EB,uni1ECD,uni1ECF,uni1ED1,uni1ED3,uni1ED5,uni1ED7,uni1ED9,uni1EE1" 	k="27" />
+<hkern g1="K,Kcommaaccent,Kappa,uni040C,uni041A,uni049A,uni049C,uni049E,uni04A0" 	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,upsilondieresistonos,upsilon,upsilondieresis,upsilontonos,uni1EE5,uni1EE7,uni1EE9,uni1EEB,uni1EED,uni1EEF,uni1EF1" 	k="23" />
+<hkern g1="K,Kcommaaccent,Kappa,uni040C,uni041A,uni049A,uni049C,uni049E,uni04A0" 	g2="v,y,yacute,ydieresis,ycircumflex,gamma,nu,uni0443,uni045E,uni0475,uni0477,uni04AF,uni04EF,uni04F1,uni04F3,ygrave,uni1EF5,uni1EF7,uni1EF9" 	k="40" />
+<hkern g1="K,Kcommaaccent,Kappa,uni040C,uni041A,uni049A,uni049C,uni049E,uni04A0" 	g2="uni0447,uni04B7,uni04CC,uni04F5" 	k="93" />
+<hkern g1="K,Kcommaaccent,Kappa,uni040C,uni041A,uni049A,uni049C,uni049E,uni04A0" 	g2="hyphen,uni00AD,endash,emdash,uni2015" 	k="162" />
+<hkern g1="K,Kcommaaccent,Kappa,uni040C,uni041A,uni049A,uni049C,uni049E,uni04A0" 	g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Cacute,Ccircumflex,uni010A,Ccaron,Gcircumflex,Gbreve,uni0120,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,OE,Ohorn,Oslashacute,Omicrontonos,Theta,Omicron,uni0404,uni041E,uni0421,uni0460,uni0472,uni0478,uni047A,uni047C,uni047E,uni0480,uni04A8,uni04AA,uni04E6,uni04E8,uni04EA,uni050C,uni1ECC,uni1ECE,uni1ED0,uni1ED2,uni1ED4,uni1ED6,uni1ED8,uni1EDA,uni1EDC,uni1EDE,uni1EE0,uni1EE2,uni1F4D" 	k="31" />
+<hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot" 	g2="quotedbl,quotesingle,uni02BC,quoteleft,quoteright,quotereversed,quotedblleft,quotedblright,minute,second" 	k="255" />
+<hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot" 	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute,Alphatonos,Alpha,Delta,Lambda,uni0410,uni0466,uni04D0,uni04D2,uni1E00,uni1EA0,uni1EA2,uni1EA4,uni1EA6,uni1EA8,uni1EAA,uni1EAC,uni1EAE,uni1EB0,uni1EB2,uni1EB4,uni1EB6" 	k="-19" />
+<hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot" 	g2="T,Tcommaaccent,Tcaron,uni0402,uni040B,uni0422,uni04A0,uni04AC,uni04B4" 	k="206" />
+<hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot" 	g2="V,uni0474,uni0476" 	k="205" />
+<hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot" 	g2="Y,Yacute,Ycircumflex,Ydieresis,Upsilontonos,Upsilon,Upsilondieresis,uni04AE,uni04B0,Ygrave,uni1EF4,uni1EF6,uni1EF8" 	k="278" />
+<hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot" 	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,upsilondieresistonos,upsilon,upsilondieresis,upsilontonos,uni1EE5,uni1EE7,uni1EE9,uni1EEB,uni1EED,uni1EEF,uni1EF1" 	k="14" />
+<hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot" 	g2="v,y,yacute,ydieresis,ycircumflex,gamma,nu,uni0443,uni045E,uni0475,uni0477,uni04AF,uni04EF,uni04F1,uni04F3,ygrave,uni1EF5,uni1EF7,uni1EF9" 	k="123" />
+<hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot" 	g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Cacute,Ccircumflex,uni010A,Ccaron,Gcircumflex,Gbreve,uni0120,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,OE,Ohorn,Oslashacute,Omicrontonos,Theta,Omicron,uni0404,uni041E,uni0421,uni0460,uni0472,uni0478,uni047A,uni047C,uni047E,uni0480,uni04A8,uni04AA,uni04E6,uni04E8,uni04EA,uni050C,uni1ECC,uni1ECE,uni1ED0,uni1ED2,uni1ED4,uni1ED6,uni1ED8,uni1EDA,uni1EDC,uni1EDE,uni1EE0,uni1EE2,uni1F4D" 	k="25" />
+<hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot" 	g2="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,uni1EE4,uni1EE6" 	k="24" />
+<hkern g1="L,Lacute,Lcommaaccent,Lcaron,Ldot" 	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis" 	k="93" />
+<hkern g1="P,Rho,uni0420" 	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute,Alphatonos,Alpha,Delta,Lambda,uni0410,uni0466,uni04D0,uni04D2,uni1E00,uni1EA0,uni1EA2,uni1EA4,uni1EA6,uni1EA8,uni1EAA,uni1EAC,uni1EAE,uni1EB0,uni1EB2,uni1EB4,uni1EB6" 	k="177" />
+<hkern g1="P,Rho,uni0420" 	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,amacron,abreve,aogonek,aringacute,uni0430,uni04D1,uni04D3,uni1E01,uni1EA1,uni1EA3,uni1EA5,uni1EA7,uni1EA9,uni1EAB,uni1EAD,uni1EAF,uni1EB1,uni1EB3,uni1EB5,uni1EB7" 	k="11" />
+<hkern g1="P,Rho,uni0420" 	g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,cacute,ccircumflex,uni010B,ccaron,dcaron,emacron,ebreve,edotaccent,eogonek,ecaron,gcircumflex,gbreve,uni0121,gcommaaccent,oe,ohorn,alphatonos,alpha,sigma1,sigma,uni0435,uni0441,uni0444,uni0450,uni0451,uni0454,uni0479,uni047D,uni0481,uni04A9,uni04AB,uni04D7,uni04D9,uni04DB,uni04E9,uni0501,uni0502,uni0503,uni050D,uni1EB9,uni1EBB,uni1EBD,uni1EBF,uni1EC1,uni1EC3,uni1EC5,uni1EC7,uni1EDB,uni1EDD,uni1EDF,uni1EE3" 	k="13" />
+<hkern g1="P,Rho,uni0420" 	g2="o,ograve,oacute,ocircumflex,otilde,odieresis,omacron,obreve,ohungarumlaut,omicron,omicrontonos,uni043E,uni0473,uni04E7,uni04EB,uni1ECD,uni1ECF,uni1ED1,uni1ED3,uni1ED5,uni1ED7,uni1ED9,uni1EE1" 	k="13" />
+<hkern g1="P,Rho,uni0420" 	g2="comma,period,colon,quotesinglbase,quotedblbase,uni2025,ellipsis" 	k="402" />
+<hkern g1="P,Rho,uni0420" 	g2="X,Chi,uni0416,uni0425,uni0496,uni04B2,uni04C1,uni04DC,uni04FC" 	k="50" />
+<hkern g1="P,Rho,uni0420" 	g2="Z,Zacute,Zdotaccent,Zcaron,Zeta" 	k="35" />
+<hkern g1="P,Rho,uni0420" 	g2="uni0409,uni041B,uni04C5,uni0508,uni0512" 	k="143" />
+<hkern g1="P,Rho,uni0420" 	g2="v,y,yacute,ydieresis,ycircumflex,gamma,nu,uni0443,uni045E,uni0475,uni0477,uni04AF,uni04EF,uni04F1,uni04F3,ygrave,uni1EF5,uni1EF7,uni1EF9" 	k="-15" />
+<hkern g1="P,Rho,uni0420" 	g2="uni043B,uni0459,uni04C6,uni0513" 	k="88" />
+<hkern g1="T,Tcommaaccent,Tcaron,Tbar,Tau,uni0422,uni04AC" 	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute,Alphatonos,Alpha,Delta,Lambda,uni0410,uni0466,uni04D0,uni04D2,uni1E00,uni1EA0,uni1EA2,uni1EA4,uni1EA6,uni1EA8,uni1EAA,uni1EAC,uni1EAE,uni1EB0,uni1EB2,uni1EB4,uni1EB6" 	k="108" />
+<hkern g1="T,Tcommaaccent,Tcaron,Tbar,Tau,uni0422,uni04AC" 	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,amacron,abreve,aogonek,aringacute,uni0430,uni04D1,uni04D3,uni1E01,uni1EA1,uni1EA3,uni1EA5,uni1EA7,uni1EA9,uni1EAB,uni1EAD,uni1EAF,uni1EB1,uni1EB3,uni1EB5,uni1EB7" 	k="83" />
+<hkern g1="T,Tcommaaccent,Tcaron,Tbar,Tau,uni0422,uni04AC" 	g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,cacute,ccircumflex,uni010B,ccaron,dcaron,emacron,ebreve,edotaccent,eogonek,ecaron,gcircumflex,gbreve,uni0121,gcommaaccent,oe,ohorn,alphatonos,alpha,sigma1,sigma,uni0435,uni0441,uni0444,uni0450,uni0451,uni0454,uni0479,uni047D,uni0481,uni04A9,uni04AB,uni04D7,uni04D9,uni04DB,uni04E9,uni0501,uni0502,uni0503,uni050D,uni1EB9,uni1EBB,uni1EBD,uni1EBF,uni1EC1,uni1EC3,uni1EC5,uni1EC7,uni1EDB,uni1EDD,uni1EDF,uni1EE3" 	k="89" />
+<hkern g1="T,Tcommaaccent,Tcaron,Tbar,Tau,uni0422,uni04AC" 	g2="m,n,p,ntilde,nacute,ncommaaccent,ncaron,napostrophe,etatonos,eta,uni0433,uni0438,uni0439,uni043A,uni043C,uni043D,uni043F,uni0440,uni0446,uni0448,uni0449,uni044C,uni044E,uni0453,uni045A,uni045C,uni045D,uni048B,uni049B,uni04A3,uni04A5,uni04C8,uni04CA,uni04CE,uni04E3,uni04E5,uni04F7,uni04F9,uni04FB,uni1E3F" 	k="89" />
+<hkern g1="T,Tcommaaccent,Tcaron,Tbar,Tau,uni0422,uni04AC" 	g2="o,ograve,oacute,ocircumflex,otilde,odieresis,omacron,obreve,ohungarumlaut,omicron,omicrontonos,uni043E,uni0473,uni04E7,uni04EB,uni1ECD,uni1ECF,uni1ED1,uni1ED3,uni1ED5,uni1ED7,uni1ED9,uni1EE1" 	k="79" />
+<hkern g1="T,Tcommaaccent,Tcaron,Tbar,Tau,uni0422,uni04AC" 	g2="s,sacute,scircumflex,scedilla,scaron,scommaaccent,uni0455" 	k="76" />
+<hkern g1="T,Tcommaaccent,Tcaron,Tbar,Tau,uni0422,uni04AC" 	g2="T,Tcommaaccent,Tcaron,uni0402,uni040B,uni0422,uni04A0,uni04AC,uni04B4" 	k="-16" />
+<hkern g1="T,Tcommaaccent,Tcaron,Tbar,Tau,uni0422,uni04AC" 	g2="V,uni0474,uni0476" 	k="-16" />
+<hkern g1="T,Tcommaaccent,Tcaron,Tbar,Tau,uni0422,uni04AC" 	g2="Y,Yacute,Ycircumflex,Ydieresis,Upsilontonos,Upsilon,Upsilondieresis,uni04AE,uni04B0,Ygrave,uni1EF4,uni1EF6,uni1EF8" 	k="-16" />
+<hkern g1="T,Tcommaaccent,Tcaron,Tbar,Tau,uni0422,uni04AC" 	g2="comma,period,colon,quotesinglbase,quotedblbase,uni2025,ellipsis" 	k="257" />
+<hkern g1="T,Tcommaaccent,Tcaron,Tbar,Tau,uni0422,uni04AC" 	g2="uni0409,uni041B,uni04C5,uni0508,uni0512" 	k="53" />
+<hkern g1="T,Tcommaaccent,Tcaron,Tbar,Tau,uni0422,uni04AC" 	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,upsilondieresistonos,upsilon,upsilondieresis,upsilontonos,uni1EE5,uni1EE7,uni1EE9,uni1EEB,uni1EED,uni1EEF,uni1EF1" 	k="65" />
+<hkern g1="T,Tcommaaccent,Tcaron,Tbar,Tau,uni0422,uni04AC" 	g2="v,y,yacute,ydieresis,ycircumflex,gamma,nu,uni0443,uni045E,uni0475,uni0477,uni04AF,uni04EF,uni04F1,uni04F3,ygrave,uni1EF5,uni1EF7,uni1EF9" 	k="81" />
+<hkern g1="T,Tcommaaccent,Tcaron,Tbar,Tau,uni0422,uni04AC" 	g2="uni043B,uni0459,uni04C6,uni0513" 	k="130" />
+<hkern g1="T,Tcommaaccent,Tcaron,Tbar,Tau,uni0422,uni04AC" 	g2="uni0447,uni04B7,uni04CC,uni04F5" 	k="132" />
+<hkern g1="T,Tcommaaccent,Tcaron,Tbar,Tau,uni0422,uni04AC" 	g2="hyphen,uni00AD,endash,emdash,uni2015" 	k="271" />
+<hkern g1="T,Tcommaaccent,Tcaron,Tbar,Tau,uni0422,uni04AC" 	g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Cacute,Ccircumflex,uni010A,Ccaron,Gcircumflex,Gbreve,uni0120,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,OE,Ohorn,Oslashacute,Omicrontonos,Theta,Omicron,uni0404,uni041E,uni0421,uni0460,uni0472,uni0478,uni047A,uni047C,uni047E,uni0480,uni04A8,uni04AA,uni04E6,uni04E8,uni04EA,uni050C,uni1ECC,uni1ECE,uni1ED0,uni1ED2,uni1ED4,uni1ED6,uni1ED8,uni1EDA,uni1EDC,uni1EDE,uni1EE0,uni1EE2,uni1F4D" 	k="28" />
+<hkern g1="T,Tcommaaccent,Tcaron,Tbar,Tau,uni0422,uni04AC" 	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis" 	k="-15" />
+<hkern g1="T,Tcommaaccent,Tcaron,Tbar,Tau,uni0422,uni04AC" 	g2="S,Sacute,Scircumflex,Scedilla,Scaron,Scommaaccent" 	k="16" />
+<hkern g1="T,Tcommaaccent,Tcaron,Tbar,Tau,uni0422,uni04AC" 	g2="x,uni0436,uni0445,uni0497,uni04B3,uni04C2,uni04DD,uni04FD" 	k="77" />
+<hkern g1="T,Tcommaaccent,Tcaron,Tbar,Tau,uni0422,uni04AC" 	g2="z,zacute,zdotaccent,zcaron" 	k="60" />
+<hkern g1="V,uni0474,uni0476" 	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute,Alphatonos,Alpha,Delta,Lambda,uni0410,uni0466,uni04D0,uni04D2,uni1E00,uni1EA0,uni1EA2,uni1EA4,uni1EA6,uni1EA8,uni1EAA,uni1EAC,uni1EAE,uni1EB0,uni1EB2,uni1EB4,uni1EB6" 	k="75" />
+<hkern g1="V,uni0474,uni0476" 	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,amacron,abreve,aogonek,aringacute,uni0430,uni04D1,uni04D3,uni1E01,uni1EA1,uni1EA3,uni1EA5,uni1EA7,uni1EA9,uni1EAB,uni1EAD,uni1EAF,uni1EB1,uni1EB3,uni1EB5,uni1EB7" 	k="46" />
+<hkern g1="V,uni0474,uni0476" 	g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,cacute,ccircumflex,uni010B,ccaron,dcaron,emacron,ebreve,edotaccent,eogonek,ecaron,gcircumflex,gbreve,uni0121,gcommaaccent,oe,ohorn,alphatonos,alpha,sigma1,sigma,uni0435,uni0441,uni0444,uni0450,uni0451,uni0454,uni0479,uni047D,uni0481,uni04A9,uni04AB,uni04D7,uni04D9,uni04DB,uni04E9,uni0501,uni0502,uni0503,uni050D,uni1EB9,uni1EBB,uni1EBD,uni1EBF,uni1EC1,uni1EC3,uni1EC5,uni1EC7,uni1EDB,uni1EDD,uni1EDF,uni1EE3" 	k="44" />
+<hkern g1="V,uni0474,uni0476" 	g2="o,ograve,oacute,ocircumflex,otilde,odieresis,omacron,obreve,ohungarumlaut,omicron,omicrontonos,uni043E,uni0473,uni04E7,uni04EB,uni1ECD,uni1ECF,uni1ED1,uni1ED3,uni1ED5,uni1ED7,uni1ED9,uni1EE1" 	k="46" />
+<hkern g1="V,uni0474,uni0476" 	g2="comma,period,colon,quotesinglbase,quotedblbase,uni2025,ellipsis" 	k="215" />
+<hkern g1="V,uni0474,uni0476" 	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,upsilondieresistonos,upsilon,upsilondieresis,upsilontonos,uni1EE5,uni1EE7,uni1EE9,uni1EEB,uni1EED,uni1EEF,uni1EF1" 	k="28" />
+<hkern g1="V,uni0474,uni0476" 	g2="v,y,yacute,ydieresis,ycircumflex,gamma,nu,uni0443,uni045E,uni0475,uni0477,uni04AF,uni04EF,uni04F1,uni04F3,ygrave,uni1EF5,uni1EF7,uni1EF9" 	k="11" />
+<hkern g1="V,uni0474,uni0476" 	g2="hyphen,uni00AD,endash,emdash,uni2015" 	k="154" />
+<hkern g1="V,uni0474,uni0476" 	g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Cacute,Ccircumflex,uni010A,Ccaron,Gcircumflex,Gbreve,uni0120,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,OE,Ohorn,Oslashacute,Omicrontonos,Theta,Omicron,uni0404,uni041E,uni0421,uni0460,uni0472,uni0478,uni047A,uni047C,uni047E,uni0480,uni04A8,uni04AA,uni04E6,uni04E8,uni04EA,uni050C,uni1ECC,uni1ECE,uni1ED0,uni1ED2,uni1ED4,uni1ED6,uni1ED8,uni1EDA,uni1EDC,uni1EDE,uni1EE0,uni1EE2,uni1F4D" 	k="13" />
+<hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" 	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute,Alphatonos,Alpha,Delta,Lambda,uni0410,uni0466,uni04D0,uni04D2,uni1E00,uni1EA0,uni1EA2,uni1EA4,uni1EA6,uni1EA8,uni1EAA,uni1EAC,uni1EAE,uni1EB0,uni1EB2,uni1EB4,uni1EB6" 	k="43" />
+<hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" 	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,amacron,abreve,aogonek,aringacute,uni0430,uni04D1,uni04D3,uni1E01,uni1EA1,uni1EA3,uni1EA5,uni1EA7,uni1EA9,uni1EAB,uni1EAD,uni1EAF,uni1EB1,uni1EB3,uni1EB5,uni1EB7" 	k="33" />
+<hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" 	g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,cacute,ccircumflex,uni010B,ccaron,dcaron,emacron,ebreve,edotaccent,eogonek,ecaron,gcircumflex,gbreve,uni0121,gcommaaccent,oe,ohorn,alphatonos,alpha,sigma1,sigma,uni0435,uni0441,uni0444,uni0450,uni0451,uni0454,uni0479,uni047D,uni0481,uni04A9,uni04AB,uni04D7,uni04D9,uni04DB,uni04E9,uni0501,uni0502,uni0503,uni050D,uni1EB9,uni1EBB,uni1EBD,uni1EBF,uni1EC1,uni1EC3,uni1EC5,uni1EC7,uni1EDB,uni1EDD,uni1EDF,uni1EE3" 	k="31" />
+<hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" 	g2="o,ograve,oacute,ocircumflex,otilde,odieresis,omacron,obreve,ohungarumlaut,omicron,omicrontonos,uni043E,uni0473,uni04E7,uni04EB,uni1ECD,uni1ECF,uni1ED1,uni1ED3,uni1ED5,uni1ED7,uni1ED9,uni1EE1" 	k="31" />
+<hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" 	g2="T,Tcommaaccent,Tcaron,uni0402,uni040B,uni0422,uni04A0,uni04AC,uni04B4" 	k="-14" />
+<hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" 	g2="comma,period,colon,quotesinglbase,quotedblbase,uni2025,ellipsis" 	k="142" />
+<hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" 	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,upsilondieresistonos,upsilon,upsilondieresis,upsilontonos,uni1EE5,uni1EE7,uni1EE9,uni1EEB,uni1EED,uni1EEF,uni1EF1" 	k="19" />
+<hkern g1="W,Wcircumflex,Wgrave,Wacute,Wdieresis" 	g2="hyphen,uni00AD,endash,emdash,uni2015" 	k="60" />
+<hkern g1="X,Chi,uni0416,uni0425,uni0496,uni04B2,uni04C1,uni04DC,uni04FC" 	g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,cacute,ccircumflex,uni010B,ccaron,dcaron,emacron,ebreve,edotaccent,eogonek,ecaron,gcircumflex,gbreve,uni0121,gcommaaccent,oe,ohorn,alphatonos,alpha,sigma1,sigma,uni0435,uni0441,uni0444,uni0450,uni0451,uni0454,uni0479,uni047D,uni0481,uni04A9,uni04AB,uni04D7,uni04D9,uni04DB,uni04E9,uni0501,uni0502,uni0503,uni050D,uni1EB9,uni1EBB,uni1EBD,uni1EBF,uni1EC1,uni1EC3,uni1EC5,uni1EC7,uni1EDB,uni1EDD,uni1EDF,uni1EE3" 	k="26" />
+<hkern g1="X,Chi,uni0416,uni0425,uni0496,uni04B2,uni04C1,uni04DC,uni04FC" 	g2="o,ograve,oacute,ocircumflex,otilde,odieresis,omacron,obreve,ohungarumlaut,omicron,omicrontonos,uni043E,uni0473,uni04E7,uni04EB,uni1ECD,uni1ECF,uni1ED1,uni1ED3,uni1ED5,uni1ED7,uni1ED9,uni1EE1" 	k="21" />
+<hkern g1="X,Chi,uni0416,uni0425,uni0496,uni04B2,uni04C1,uni04DC,uni04FC" 	g2="V,uni0474,uni0476" 	k="-14" />
+<hkern g1="X,Chi,uni0416,uni0425,uni0496,uni04B2,uni04C1,uni04DC,uni04FC" 	g2="uni0409,uni041B,uni04C5,uni0508,uni0512" 	k="-17" />
+<hkern g1="X,Chi,uni0416,uni0425,uni0496,uni04B2,uni04C1,uni04DC,uni04FC" 	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,upsilondieresistonos,upsilon,upsilondieresis,upsilontonos,uni1EE5,uni1EE7,uni1EE9,uni1EEB,uni1EED,uni1EEF,uni1EF1" 	k="21" />
+<hkern g1="X,Chi,uni0416,uni0425,uni0496,uni04B2,uni04C1,uni04DC,uni04FC" 	g2="v,y,yacute,ydieresis,ycircumflex,gamma,nu,uni0443,uni045E,uni0475,uni0477,uni04AF,uni04EF,uni04F1,uni04F3,ygrave,uni1EF5,uni1EF7,uni1EF9" 	k="31" />
+<hkern g1="X,Chi,uni0416,uni0425,uni0496,uni04B2,uni04C1,uni04DC,uni04FC" 	g2="uni043B,uni0459,uni04C6,uni0513" 	k="-17" />
+<hkern g1="X,Chi,uni0416,uni0425,uni0496,uni04B2,uni04C1,uni04DC,uni04FC" 	g2="uni0447,uni04B7,uni04CC,uni04F5" 	k="47" />
+<hkern g1="X,Chi,uni0416,uni0425,uni0496,uni04B2,uni04C1,uni04DC,uni04FC" 	g2="hyphen,uni00AD,endash,emdash,uni2015" 	k="153" />
+<hkern g1="X,Chi,uni0416,uni0425,uni0496,uni04B2,uni04C1,uni04DC,uni04FC" 	g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Cacute,Ccircumflex,uni010A,Ccaron,Gcircumflex,Gbreve,uni0120,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,OE,Ohorn,Oslashacute,Omicrontonos,Theta,Omicron,uni0404,uni041E,uni0421,uni0460,uni0472,uni0478,uni047A,uni047C,uni047E,uni0480,uni04A8,uni04AA,uni04E6,uni04E8,uni04EA,uni050C,uni1ECC,uni1ECE,uni1ED0,uni1ED2,uni1ED4,uni1ED6,uni1ED8,uni1EDA,uni1EDC,uni1EDE,uni1EE0,uni1EE2,uni1F4D" 	k="25" />
+<hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Upsilontonos,Upsilon,Upsilondieresis,uni04AE,uni04B0,Ygrave,uni1EF4,uni1EF6,uni1EF8" 	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute,Alphatonos,Alpha,Delta,Lambda,uni0410,uni0466,uni04D0,uni04D2,uni1E00,uni1EA0,uni1EA2,uni1EA4,uni1EA6,uni1EA8,uni1EAA,uni1EAC,uni1EAE,uni1EB0,uni1EB2,uni1EB4,uni1EB6" 	k="148" />
+<hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Upsilontonos,Upsilon,Upsilondieresis,uni04AE,uni04B0,Ygrave,uni1EF4,uni1EF6,uni1EF8" 	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,amacron,abreve,aogonek,aringacute,uni0430,uni04D1,uni04D3,uni1E01,uni1EA1,uni1EA3,uni1EA5,uni1EA7,uni1EA9,uni1EAB,uni1EAD,uni1EAF,uni1EB1,uni1EB3,uni1EB5,uni1EB7" 	k="63" />
+<hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Upsilontonos,Upsilon,Upsilondieresis,uni04AE,uni04B0,Ygrave,uni1EF4,uni1EF6,uni1EF8" 	g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,cacute,ccircumflex,uni010B,ccaron,dcaron,emacron,ebreve,edotaccent,eogonek,ecaron,gcircumflex,gbreve,uni0121,gcommaaccent,oe,ohorn,alphatonos,alpha,sigma1,sigma,uni0435,uni0441,uni0444,uni0450,uni0451,uni0454,uni0479,uni047D,uni0481,uni04A9,uni04AB,uni04D7,uni04D9,uni04DB,uni04E9,uni0501,uni0502,uni0503,uni050D,uni1EB9,uni1EBB,uni1EBD,uni1EBF,uni1EC1,uni1EC3,uni1EC5,uni1EC7,uni1EDB,uni1EDD,uni1EDF,uni1EE3" 	k="65" />
+<hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Upsilontonos,Upsilon,Upsilondieresis,uni04AE,uni04B0,Ygrave,uni1EF4,uni1EF6,uni1EF8" 	g2="m,n,p,ntilde,nacute,ncommaaccent,ncaron,napostrophe,etatonos,eta,uni0433,uni0438,uni0439,uni043A,uni043C,uni043D,uni043F,uni0440,uni0446,uni0448,uni0449,uni044C,uni044E,uni0453,uni045A,uni045C,uni045D,uni048B,uni049B,uni04A3,uni04A5,uni04C8,uni04CA,uni04CE,uni04E3,uni04E5,uni04F7,uni04F9,uni04FB,uni1E3F" 	k="40" />
+<hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Upsilontonos,Upsilon,Upsilondieresis,uni04AE,uni04B0,Ygrave,uni1EF4,uni1EF6,uni1EF8" 	g2="o,ograve,oacute,ocircumflex,otilde,odieresis,omacron,obreve,ohungarumlaut,omicron,omicrontonos,uni043E,uni0473,uni04E7,uni04EB,uni1ECD,uni1ECF,uni1ED1,uni1ED3,uni1ED5,uni1ED7,uni1ED9,uni1EE1" 	k="65" />
+<hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Upsilontonos,Upsilon,Upsilondieresis,uni04AE,uni04B0,Ygrave,uni1EF4,uni1EF6,uni1EF8" 	g2="s,sacute,scircumflex,scedilla,scaron,scommaaccent,uni0455" 	k="58" />
+<hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Upsilontonos,Upsilon,Upsilondieresis,uni04AE,uni04B0,Ygrave,uni1EF4,uni1EF6,uni1EF8" 	g2="T,Tcommaaccent,Tcaron,uni0402,uni040B,uni0422,uni04A0,uni04AC,uni04B4" 	k="-17" />
+<hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Upsilontonos,Upsilon,Upsilondieresis,uni04AE,uni04B0,Ygrave,uni1EF4,uni1EF6,uni1EF8" 	g2="V,uni0474,uni0476" 	k="-18" />
+<hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Upsilontonos,Upsilon,Upsilondieresis,uni04AE,uni04B0,Ygrave,uni1EF4,uni1EF6,uni1EF8" 	g2="Y,Yacute,Ycircumflex,Ydieresis,Upsilontonos,Upsilon,Upsilondieresis,uni04AE,uni04B0,Ygrave,uni1EF4,uni1EF6,uni1EF8" 	k="-18" />
+<hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Upsilontonos,Upsilon,Upsilondieresis,uni04AE,uni04B0,Ygrave,uni1EF4,uni1EF6,uni1EF8" 	g2="comma,period,colon,quotesinglbase,quotedblbase,uni2025,ellipsis" 	k="230" />
+<hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Upsilontonos,Upsilon,Upsilondieresis,uni04AE,uni04B0,Ygrave,uni1EF4,uni1EF6,uni1EF8" 	g2="X,Chi,uni0416,uni0425,uni0496,uni04B2,uni04C1,uni04DC,uni04FC" 	k="-13" />
+<hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Upsilontonos,Upsilon,Upsilondieresis,uni04AE,uni04B0,Ygrave,uni1EF4,uni1EF6,uni1EF8" 	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,upsilondieresistonos,upsilon,upsilondieresis,upsilontonos,uni1EE5,uni1EE7,uni1EE9,uni1EEB,uni1EED,uni1EEF,uni1EF1" 	k="39" />
+<hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Upsilontonos,Upsilon,Upsilondieresis,uni04AE,uni04B0,Ygrave,uni1EF4,uni1EF6,uni1EF8" 	g2="v,y,yacute,ydieresis,ycircumflex,gamma,nu,uni0443,uni045E,uni0475,uni0477,uni04AF,uni04EF,uni04F1,uni04F3,ygrave,uni1EF5,uni1EF7,uni1EF9" 	k="20" />
+<hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Upsilontonos,Upsilon,Upsilondieresis,uni04AE,uni04B0,Ygrave,uni1EF4,uni1EF6,uni1EF8" 	g2="hyphen,uni00AD,endash,emdash,uni2015" 	k="150" />
+<hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Upsilontonos,Upsilon,Upsilondieresis,uni04AE,uni04B0,Ygrave,uni1EF4,uni1EF6,uni1EF8" 	g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Cacute,Ccircumflex,uni010A,Ccaron,Gcircumflex,Gbreve,uni0120,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,OE,Ohorn,Oslashacute,Omicrontonos,Theta,Omicron,uni0404,uni041E,uni0421,uni0460,uni0472,uni0478,uni047A,uni047C,uni047E,uni0480,uni04A8,uni04AA,uni04E6,uni04E8,uni04EA,uni050C,uni1ECC,uni1ECE,uni1ED0,uni1ED2,uni1ED4,uni1ED6,uni1ED8,uni1EDA,uni1EDC,uni1EDE,uni1EE0,uni1EE2,uni1F4D" 	k="29" />
+<hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Upsilontonos,Upsilon,Upsilondieresis,uni04AE,uni04B0,Ygrave,uni1EF4,uni1EF6,uni1EF8" 	g2="U,Ugrave,Uacute,Ucircumflex,Udieresis,Utilde,Umacron,Ubreve,Uring,Uhungarumlaut,Uogonek,uni1EE4,uni1EE6" 	k="96" />
+<hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Upsilontonos,Upsilon,Upsilondieresis,uni04AE,uni04B0,Ygrave,uni1EF4,uni1EF6,uni1EF8" 	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis" 	k="-17" />
+<hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Upsilontonos,Upsilon,Upsilondieresis,uni04AE,uni04B0,Ygrave,uni1EF4,uni1EF6,uni1EF8" 	g2="S,Sacute,Scircumflex,Scedilla,Scaron,Scommaaccent" 	k="16" />
+<hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Upsilontonos,Upsilon,Upsilondieresis,uni04AE,uni04B0,Ygrave,uni1EF4,uni1EF6,uni1EF8" 	g2="x,uni0436,uni0445,uni0497,uni04B3,uni04C2,uni04DD,uni04FD" 	k="23" />
+<hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Upsilontonos,Upsilon,Upsilondieresis,uni04AE,uni04B0,Ygrave,uni1EF4,uni1EF6,uni1EF8" 	g2="z,zacute,zdotaccent,zcaron" 	k="30" />
+<hkern g1="Y,Yacute,Ycircumflex,Ydieresis,Upsilontonos,Upsilon,Upsilondieresis,uni04AE,uni04B0,Ygrave,uni1EF4,uni1EF6,uni1EF8" 	g2="J,Jcircumflex,uni0408" 	k="96" />
+<hkern g1="Z,Zacute,Zdotaccent,Zcaron,Zeta" 	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute,Alphatonos,Alpha,Delta,Lambda,uni0410,uni0466,uni04D0,uni04D2,uni1E00,uni1EA0,uni1EA2,uni1EA4,uni1EA6,uni1EA8,uni1EAA,uni1EAC,uni1EAE,uni1EB0,uni1EB2,uni1EB4,uni1EB6" 	k="-13" />
+<hkern g1="Z,Zacute,Zdotaccent,Zcaron,Zeta" 	g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,cacute,ccircumflex,uni010B,ccaron,dcaron,emacron,ebreve,edotaccent,eogonek,ecaron,gcircumflex,gbreve,uni0121,gcommaaccent,oe,ohorn,alphatonos,alpha,sigma1,sigma,uni0435,uni0441,uni0444,uni0450,uni0451,uni0454,uni0479,uni047D,uni0481,uni04A9,uni04AB,uni04D7,uni04D9,uni04DB,uni04E9,uni0501,uni0502,uni0503,uni050D,uni1EB9,uni1EBB,uni1EBD,uni1EBF,uni1EC1,uni1EC3,uni1EC5,uni1EC7,uni1EDB,uni1EDD,uni1EDF,uni1EE3" 	k="21" />
+<hkern g1="Z,Zacute,Zdotaccent,Zcaron,Zeta" 	g2="o,ograve,oacute,ocircumflex,otilde,odieresis,omacron,obreve,ohungarumlaut,omicron,omicrontonos,uni043E,uni0473,uni04E7,uni04EB,uni1ECD,uni1ECF,uni1ED1,uni1ED3,uni1ED5,uni1ED7,uni1ED9,uni1EE1" 	k="21" />
+<hkern g1="Z,Zacute,Zdotaccent,Zcaron,Zeta" 	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,upsilondieresistonos,upsilon,upsilondieresis,upsilontonos,uni1EE5,uni1EE7,uni1EE9,uni1EEB,uni1EED,uni1EEF,uni1EF1" 	k="19" />
+<hkern g1="Z,Zacute,Zdotaccent,Zcaron,Zeta" 	g2="v,y,yacute,ydieresis,ycircumflex,gamma,nu,uni0443,uni045E,uni0475,uni0477,uni04AF,uni04EF,uni04F1,uni04F3,ygrave,uni1EF5,uni1EF7,uni1EF9" 	k="27" />
+<hkern g1="Z,Zacute,Zdotaccent,Zcaron,Zeta" 	g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Cacute,Ccircumflex,uni010A,Ccaron,Gcircumflex,Gbreve,uni0120,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,OE,Ohorn,Oslashacute,Omicrontonos,Theta,Omicron,uni0404,uni041E,uni0421,uni0460,uni0472,uni0478,uni047A,uni047C,uni047E,uni0480,uni04A8,uni04AA,uni04E6,uni04E8,uni04EA,uni050C,uni1ECC,uni1ECE,uni1ED0,uni1ED2,uni1ED4,uni1ED6,uni1ED8,uni1EDA,uni1EDC,uni1EDE,uni1EE0,uni1EE2,uni1F4D" 	k="26" />
+<hkern g1="a,agrave,aacute,acircumflex,atilde,adieresis,aring,amacron,abreve,aogonek,aringacute,uni0430,uni04D1,uni04D3,uni1E01,uni1EA1,uni1EA3,uni1EA5,uni1EA7,uni1EA9,uni1EAB,uni1EAD,uni1EAF,uni1EB1,uni1EB3,uni1EB5,uni1EB7" 	g2="quotedbl,quotesingle,uni02BC,quoteleft,quoteright,quotereversed,quotedblleft,quotedblright,minute,second" 	k="17" />
+<hkern g1="a,agrave,aacute,acircumflex,atilde,adieresis,aring,amacron,abreve,aogonek,aringacute,uni0430,uni04D1,uni04D3,uni1E01,uni1EA1,uni1EA3,uni1EA5,uni1EA7,uni1EA9,uni1EAB,uni1EAD,uni1EAF,uni1EB1,uni1EB3,uni1EB5,uni1EB7" 	g2="v,y,yacute,ydieresis,ycircumflex,gamma,nu,uni0443,uni045E,uni0475,uni0477,uni04AF,uni04EF,uni04F1,uni04F3,ygrave,uni1EF5,uni1EF7,uni1EF9" 	k="15" />
+<hkern g1="b,p,thorn,rho,uni0440,uni0444,uni044D,uni048F,uni04ED" 	g2="quotedbl,quotesingle,uni02BC,quoteleft,quoteright,quotereversed,quotedblleft,quotedblright,minute,second" 	k="29" />
+<hkern g1="b,p,thorn,rho,uni0440,uni0444,uni044D,uni048F,uni04ED" 	g2="v,y,yacute,ydieresis,ycircumflex,gamma,nu,uni0443,uni045E,uni0475,uni0477,uni04AF,uni04EF,uni04F1,uni04F3,ygrave,uni1EF5,uni1EF7,uni1EF9" 	k="11" />
+<hkern g1="b,p,thorn,rho,uni0440,uni0444,uni044D,uni048F,uni04ED" 	g2="uni043B,uni0459,uni04C6,uni0513" 	k="14" />
+<hkern g1="b,p,thorn,rho,uni0440,uni0444,uni044D,uni048F,uni04ED" 	g2="x,uni0436,uni0445,uni0497,uni04B3,uni04C2,uni04DD,uni04FD" 	k="15" />
+<hkern g1="b,p,thorn,rho,uni0440,uni0444,uni044D,uni048F,uni04ED" 	g2="z,zacute,zdotaccent,zcaron" 	k="15" />
+<hkern g1="c,ccedilla,cacute,ccircumflex,uni010B,ccaron,uni0441,uni04AB" 	g2="quotedbl,quotesingle,uni02BC,quoteleft,quoteright,quotereversed,quotedblleft,quotedblright,minute,second" 	k="11" />
+<hkern g1="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0435,uni0450,uni0451,uni04D7,uni04D9,uni04DB,uni1EB9,uni1EBB,uni1EBD,uni1EBF,uni1EC1,uni1EC3,uni1EC5,uni1EC7" 	g2="quotedbl,quotesingle,uni02BC,quoteleft,quoteright,quotereversed,quotedblleft,quotedblright,minute,second" 	k="14" />
+<hkern g1="e,egrave,eacute,ecircumflex,edieresis,emacron,ebreve,edotaccent,eogonek,ecaron,uni0435,uni0450,uni0451,uni04D7,uni04D9,uni04DB,uni1EB9,uni1EBB,uni1EBD,uni1EBF,uni1EC1,uni1EC3,uni1EC5,uni1EC7" 	g2="v,y,yacute,ydieresis,ycircumflex,gamma,nu,uni0443,uni045E,uni0475,uni0477,uni04AF,uni04EF,uni04F1,uni04F3,ygrave,uni1EF5,uni1EF7,uni1EF9" 	k="13" />
+<hkern g1="h,m,n,ntilde,hcircumflex,nacute,ncommaaccent,ncaron,napostrophe,etatonos,eta,uni04BB,uni1E3F" 	g2="quotedbl,quotesingle,uni02BC,quoteleft,quoteright,quotereversed,quotedblleft,quotedblright,minute,second" 	k="16" />
+<hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,omacron,obreve,ohungarumlaut,omicron,omicrontonos,uni043E,uni0473,uni04E7,uni04EB,uni1ECD,uni1ECF,uni1ED1,uni1ED3,uni1ED5,uni1ED7,uni1ED9,uni1EE1" 	g2="quotedbl,quotesingle,uni02BC,quoteleft,quoteright,quotereversed,quotedblleft,quotedblright,minute,second" 	k="20" />
+<hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,omacron,obreve,ohungarumlaut,omicron,omicrontonos,uni043E,uni0473,uni04E7,uni04EB,uni1ECD,uni1ECF,uni1ED1,uni1ED3,uni1ED5,uni1ED7,uni1ED9,uni1EE1" 	g2="v,y,yacute,ydieresis,ycircumflex,gamma,nu,uni0443,uni045E,uni0475,uni0477,uni04AF,uni04EF,uni04F1,uni04F3,ygrave,uni1EF5,uni1EF7,uni1EF9" 	k="15" />
+<hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,omacron,obreve,ohungarumlaut,omicron,omicrontonos,uni043E,uni0473,uni04E7,uni04EB,uni1ECD,uni1ECF,uni1ED1,uni1ED3,uni1ED5,uni1ED7,uni1ED9,uni1EE1" 	g2="uni043B,uni0459,uni04C6,uni0513" 	k="16" />
+<hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,omacron,obreve,ohungarumlaut,omicron,omicrontonos,uni043E,uni0473,uni04E7,uni04EB,uni1ECD,uni1ECF,uni1ED1,uni1ED3,uni1ED5,uni1ED7,uni1ED9,uni1EE1" 	g2="x,uni0436,uni0445,uni0497,uni04B3,uni04C2,uni04DD,uni04FD" 	k="21" />
+<hkern g1="o,ograve,oacute,ocircumflex,otilde,odieresis,omacron,obreve,ohungarumlaut,omicron,omicrontonos,uni043E,uni0473,uni04E7,uni04EB,uni1ECD,uni1ECF,uni1ED1,uni1ED3,uni1ED5,uni1ED7,uni1ED9,uni1EE1" 	g2="z,zacute,zdotaccent,zcaron" 	k="16" />
+<hkern g1="r,racute,rcommaaccent,rcaron" 	g2="quotedbl,quotesingle,uni02BC,quoteleft,quoteright,quotereversed,quotedblleft,quotedblright,minute,second" 	k="-16" />
+<hkern g1="r,racute,rcommaaccent,rcaron" 	g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,cacute,ccircumflex,uni010B,ccaron,dcaron,emacron,ebreve,edotaccent,eogonek,ecaron,gcircumflex,gbreve,uni0121,gcommaaccent,oe,ohorn,alphatonos,alpha,sigma1,sigma,uni0435,uni0441,uni0444,uni0450,uni0451,uni0454,uni0479,uni047D,uni0481,uni04A9,uni04AB,uni04D7,uni04D9,uni04DB,uni04E9,uni0501,uni0502,uni0503,uni050D,uni1EB9,uni1EBB,uni1EBD,uni1EBF,uni1EC1,uni1EC3,uni1EC5,uni1EC7,uni1EDB,uni1EDD,uni1EDF,uni1EE3" 	k="19" />
+<hkern g1="r,racute,rcommaaccent,rcaron" 	g2="o,ograve,oacute,ocircumflex,otilde,odieresis,omacron,obreve,ohungarumlaut,omicron,omicrontonos,uni043E,uni0473,uni04E7,uni04EB,uni1ECD,uni1ECF,uni1ED1,uni1ED3,uni1ED5,uni1ED7,uni1ED9,uni1EE1" 	k="20" />
+<hkern g1="r,racute,rcommaaccent,rcaron" 	g2="comma,period,colon,quotesinglbase,quotedblbase,uni2025,ellipsis" 	k="172" />
+<hkern g1="r,racute,rcommaaccent,rcaron" 	g2="v,y,yacute,ydieresis,ycircumflex,gamma,nu,uni0443,uni045E,uni0475,uni0477,uni04AF,uni04EF,uni04F1,uni04F3,ygrave,uni1EF5,uni1EF7,uni1EF9" 	k="-18" />
+<hkern g1="v,y,yacute,ydieresis,ycircumflex,gamma,nu,uni0443,uni045E,uni0475,uni0477,uni04AF,uni04EF,uni04F1,uni04F3,ygrave,uni1EF5,uni1EF7,uni1EF9" 	g2="quotedbl,quotesingle,uni02BC,quoteleft,quoteright,quotereversed,quotedblleft,quotedblright,minute,second" 	k="-15" />
+<hkern g1="v,y,yacute,ydieresis,ycircumflex,gamma,nu,uni0443,uni045E,uni0475,uni0477,uni04AF,uni04EF,uni04F1,uni04F3,ygrave,uni1EF5,uni1EF7,uni1EF9" 	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,amacron,abreve,aogonek,aringacute,uni0430,uni04D1,uni04D3,uni1E01,uni1EA1,uni1EA3,uni1EA5,uni1EA7,uni1EA9,uni1EAB,uni1EAD,uni1EAF,uni1EB1,uni1EB3,uni1EB5,uni1EB7" 	k="15" />
+<hkern g1="v,y,yacute,ydieresis,ycircumflex,gamma,nu,uni0443,uni045E,uni0475,uni0477,uni04AF,uni04EF,uni04F1,uni04F3,ygrave,uni1EF5,uni1EF7,uni1EF9" 	g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,cacute,ccircumflex,uni010B,ccaron,dcaron,emacron,ebreve,edotaccent,eogonek,ecaron,gcircumflex,gbreve,uni0121,gcommaaccent,oe,ohorn,alphatonos,alpha,sigma1,sigma,uni0435,uni0441,uni0444,uni0450,uni0451,uni0454,uni0479,uni047D,uni0481,uni04A9,uni04AB,uni04D7,uni04D9,uni04DB,uni04E9,uni0501,uni0502,uni0503,uni050D,uni1EB9,uni1EBB,uni1EBD,uni1EBF,uni1EC1,uni1EC3,uni1EC5,uni1EC7,uni1EDB,uni1EDD,uni1EDF,uni1EE3" 	k="13" />
+<hkern g1="v,y,yacute,ydieresis,ycircumflex,gamma,nu,uni0443,uni045E,uni0475,uni0477,uni04AF,uni04EF,uni04F1,uni04F3,ygrave,uni1EF5,uni1EF7,uni1EF9" 	g2="o,ograve,oacute,ocircumflex,otilde,odieresis,omacron,obreve,ohungarumlaut,omicron,omicrontonos,uni043E,uni0473,uni04E7,uni04EB,uni1ECD,uni1ECF,uni1ED1,uni1ED3,uni1ED5,uni1ED7,uni1ED9,uni1EE1" 	k="15" />
+<hkern g1="v,y,yacute,ydieresis,ycircumflex,gamma,nu,uni0443,uni045E,uni0475,uni0477,uni04AF,uni04EF,uni04F1,uni04F3,ygrave,uni1EF5,uni1EF7,uni1EF9" 	g2="comma,period,colon,quotesinglbase,quotedblbase,uni2025,ellipsis" 	k="165" />
+<hkern g1="v,y,yacute,ydieresis,ycircumflex,gamma,nu,uni0443,uni045E,uni0475,uni0477,uni04AF,uni04EF,uni04F1,uni04F3,ygrave,uni1EF5,uni1EF7,uni1EF9" 	g2="uni043B,uni0459,uni04C6,uni0513" 	k="41" />
+<hkern g1="x,uni0436,uni0445,uni0497,uni04B3,uni04C2,uni04DD,uni04FD" 	g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,cacute,ccircumflex,uni010B,ccaron,dcaron,emacron,ebreve,edotaccent,eogonek,ecaron,gcircumflex,gbreve,uni0121,gcommaaccent,oe,ohorn,alphatonos,alpha,sigma1,sigma,uni0435,uni0441,uni0444,uni0450,uni0451,uni0454,uni0479,uni047D,uni0481,uni04A9,uni04AB,uni04D7,uni04D9,uni04DB,uni04E9,uni0501,uni0502,uni0503,uni050D,uni1EB9,uni1EBB,uni1EBD,uni1EBF,uni1EC1,uni1EC3,uni1EC5,uni1EC7,uni1EDB,uni1EDD,uni1EDF,uni1EE3" 	k="20" />
+<hkern g1="x,uni0436,uni0445,uni0497,uni04B3,uni04C2,uni04DD,uni04FD" 	g2="o,ograve,oacute,ocircumflex,otilde,odieresis,omacron,obreve,ohungarumlaut,omicron,omicrontonos,uni043E,uni0473,uni04E7,uni04EB,uni1ECD,uni1ECF,uni1ED1,uni1ED3,uni1ED5,uni1ED7,uni1ED9,uni1EE1" 	k="39" />
+<hkern g1="z,zacute,zdotaccent,zcaron" 	g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,cacute,ccircumflex,uni010B,ccaron,dcaron,emacron,ebreve,edotaccent,eogonek,ecaron,gcircumflex,gbreve,uni0121,gcommaaccent,oe,ohorn,alphatonos,alpha,sigma1,sigma,uni0435,uni0441,uni0444,uni0450,uni0451,uni0454,uni0479,uni047D,uni0481,uni04A9,uni04AB,uni04D7,uni04D9,uni04DB,uni04E9,uni0501,uni0502,uni0503,uni050D,uni1EB9,uni1EBB,uni1EBD,uni1EBF,uni1EC1,uni1EC3,uni1EC5,uni1EC7,uni1EDB,uni1EDD,uni1EDF,uni1EE3" 	k="16" />
+<hkern g1="z,zacute,zdotaccent,zcaron" 	g2="o,ograve,oacute,ocircumflex,otilde,odieresis,omacron,obreve,ohungarumlaut,omicron,omicrontonos,uni043E,uni0473,uni04E7,uni04EB,uni1ECD,uni1ECF,uni1ED1,uni1ED3,uni1ED5,uni1ED7,uni1ED9,uni1EE1" 	k="16" />
+<hkern g1="Gamma,uni0403,uni0413,uni0490,uni0492,uni04F6" 	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute,Alphatonos,Alpha,Delta,Lambda,uni0410,uni0466,uni04D0,uni04D2,uni1E00,uni1EA0,uni1EA2,uni1EA4,uni1EA6,uni1EA8,uni1EAA,uni1EAC,uni1EAE,uni1EB0,uni1EB2,uni1EB4,uni1EB6" 	k="204" />
+<hkern g1="Gamma,uni0403,uni0413,uni0490,uni0492,uni04F6" 	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,amacron,abreve,aogonek,aringacute,uni0430,uni04D1,uni04D3,uni1E01,uni1EA1,uni1EA3,uni1EA5,uni1EA7,uni1EA9,uni1EAB,uni1EAD,uni1EAF,uni1EB1,uni1EB3,uni1EB5,uni1EB7" 	k="162" />
+<hkern g1="Gamma,uni0403,uni0413,uni0490,uni0492,uni04F6" 	g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,cacute,ccircumflex,uni010B,ccaron,dcaron,emacron,ebreve,edotaccent,eogonek,ecaron,gcircumflex,gbreve,uni0121,gcommaaccent,oe,ohorn,alphatonos,alpha,sigma1,sigma,uni0435,uni0441,uni0444,uni0450,uni0451,uni0454,uni0479,uni047D,uni0481,uni04A9,uni04AB,uni04D7,uni04D9,uni04DB,uni04E9,uni0501,uni0502,uni0503,uni050D,uni1EB9,uni1EBB,uni1EBD,uni1EBF,uni1EC1,uni1EC3,uni1EC5,uni1EC7,uni1EDB,uni1EDD,uni1EDF,uni1EE3" 	k="171" />
+<hkern g1="Gamma,uni0403,uni0413,uni0490,uni0492,uni04F6" 	g2="m,n,p,ntilde,nacute,ncommaaccent,ncaron,napostrophe,etatonos,eta,uni0433,uni0438,uni0439,uni043A,uni043C,uni043D,uni043F,uni0440,uni0446,uni0448,uni0449,uni044C,uni044E,uni0453,uni045A,uni045C,uni045D,uni048B,uni049B,uni04A3,uni04A5,uni04C8,uni04CA,uni04CE,uni04E3,uni04E5,uni04F7,uni04F9,uni04FB,uni1E3F" 	k="171" />
+<hkern g1="Gamma,uni0403,uni0413,uni0490,uni0492,uni04F6" 	g2="o,ograve,oacute,ocircumflex,otilde,odieresis,omacron,obreve,ohungarumlaut,omicron,omicrontonos,uni043E,uni0473,uni04E7,uni04EB,uni1ECD,uni1ECF,uni1ED1,uni1ED3,uni1ED5,uni1ED7,uni1ED9,uni1EE1" 	k="154" />
+<hkern g1="Gamma,uni0403,uni0413,uni0490,uni0492,uni04F6" 	g2="s,sacute,scircumflex,scedilla,scaron,scommaaccent,uni0455" 	k="150" />
+<hkern g1="Gamma,uni0403,uni0413,uni0490,uni0492,uni04F6" 	g2="T,Tcommaaccent,Tcaron,uni0402,uni040B,uni0422,uni04A0,uni04AC,uni04B4" 	k="-7" />
+<hkern g1="Gamma,uni0403,uni0413,uni0490,uni0492,uni04F6" 	g2="V,uni0474,uni0476" 	k="-7" />
+<hkern g1="Gamma,uni0403,uni0413,uni0490,uni0492,uni04F6" 	g2="Y,Yacute,Ycircumflex,Ydieresis,Upsilontonos,Upsilon,Upsilondieresis,uni04AE,uni04B0,Ygrave,uni1EF4,uni1EF6,uni1EF8" 	k="-7" />
+<hkern g1="Gamma,uni0403,uni0413,uni0490,uni0492,uni04F6" 	g2="comma,period,colon,quotesinglbase,quotedblbase,uni2025,ellipsis" 	k="456" />
+<hkern g1="Gamma,uni0403,uni0413,uni0490,uni0492,uni04F6" 	g2="uni0409,uni041B,uni04C5,uni0508,uni0512" 	k="110" />
+<hkern g1="Gamma,uni0403,uni0413,uni0490,uni0492,uni04F6" 	g2="u,ugrave,uacute,ucircumflex,udieresis,utilde,umacron,ubreve,uring,uhungarumlaut,uogonek,uhorn,upsilondieresistonos,upsilon,upsilondieresis,upsilontonos,uni1EE5,uni1EE7,uni1EE9,uni1EEB,uni1EED,uni1EEF,uni1EF1" 	k="131" />
+<hkern g1="Gamma,uni0403,uni0413,uni0490,uni0492,uni04F6" 	g2="v,y,yacute,ydieresis,ycircumflex,gamma,nu,uni0443,uni045E,uni0475,uni0477,uni04AF,uni04EF,uni04F1,uni04F3,ygrave,uni1EF5,uni1EF7,uni1EF9" 	k="158" />
+<hkern g1="Gamma,uni0403,uni0413,uni0490,uni0492,uni04F6" 	g2="uni043B,uni0459,uni04C6,uni0513" 	k="241" />
+<hkern g1="Gamma,uni0403,uni0413,uni0490,uni0492,uni04F6" 	g2="uni0447,uni04B7,uni04CC,uni04F5" 	k="244" />
+<hkern g1="Gamma,uni0403,uni0413,uni0490,uni0492,uni04F6" 	g2="hyphen,uni00AD,endash,emdash,uni2015" 	k="480" />
+<hkern g1="Gamma,uni0403,uni0413,uni0490,uni0492,uni04F6" 	g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Cacute,Ccircumflex,uni010A,Ccaron,Gcircumflex,Gbreve,uni0120,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,OE,Ohorn,Oslashacute,Omicrontonos,Theta,Omicron,uni0404,uni041E,uni0421,uni0460,uni0472,uni0478,uni047A,uni047C,uni047E,uni0480,uni04A8,uni04AA,uni04E6,uni04E8,uni04EA,uni050C,uni1ECC,uni1ECE,uni1ED0,uni1ED2,uni1ED4,uni1ED6,uni1ED8,uni1EDA,uni1EDC,uni1EDE,uni1EE0,uni1EE2,uni1F4D" 	k="67" />
+<hkern g1="Gamma,uni0403,uni0413,uni0490,uni0492,uni04F6" 	g2="W,Wcircumflex,Wgrave,Wacute,Wdieresis" 	k="-5" />
+<hkern g1="Gamma,uni0403,uni0413,uni0490,uni0492,uni04F6" 	g2="S,Sacute,Scircumflex,Scedilla,Scaron,Scommaaccent" 	k="47" />
+<hkern g1="Gamma,uni0403,uni0413,uni0490,uni0492,uni04F6" 	g2="x,uni0436,uni0445,uni0497,uni04B3,uni04C2,uni04DD,uni04FD" 	k="150" />
+<hkern g1="Gamma,uni0403,uni0413,uni0490,uni0492,uni04F6" 	g2="z,zacute,zdotaccent,zcaron" 	k="122" />
+<hkern g1="uni0409,uni040A,uni042A,uni042C,uni0462" 	g2="quotedbl,quotesingle,uni02BC,quoteleft,quoteright,quotereversed,quotedblleft,quotedblright,minute,second" 	k="64" />
+<hkern g1="uni0409,uni040A,uni042A,uni042C,uni0462" 	g2="T,Tcommaaccent,Tcaron,uni0402,uni040B,uni0422,uni04A0,uni04AC,uni04B4" 	k="100" />
+<hkern g1="uni0409,uni040A,uni042A,uni042C,uni0462" 	g2="V,uni0474,uni0476" 	k="56" />
+<hkern g1="uni0409,uni040A,uni042A,uni042C,uni0462" 	g2="Y,Yacute,Ycircumflex,Ydieresis,Upsilontonos,Upsilon,Upsilondieresis,uni04AE,uni04B0,Ygrave,uni1EF4,uni1EF6,uni1EF8" 	k="83" />
+<hkern g1="uni0409,uni040A,uni042A,uni042C,uni0462" 	g2="uni040E,uni0423,uni04EE,uni04F0,uni04F2" 	k="21" />
+<hkern g1="uni0409,uni040A,uni042A,uni042C,uni0462" 	g2="uni0427,uni04B6,uni04CB,uni04F4" 	k="25" />
+<hkern g1="uni0409,uni040A,uni042A,uni042C,uni0462" 	g2="x,uni0436,uni0445,uni0497,uni04B3,uni04C2,uni04DD,uni04FD" 	k="55" />
+<hkern g1="uni040E,uni0423,uni04EE,uni04F0,uni04F2" 	g2="A,Agrave,Aacute,Acircumflex,Atilde,Adieresis,Aring,Amacron,Abreve,Aogonek,Aringacute,Alphatonos,Alpha,Delta,Lambda,uni0410,uni0466,uni04D0,uni04D2,uni1E00,uni1EA0,uni1EA2,uni1EA4,uni1EA6,uni1EA8,uni1EAA,uni1EAC,uni1EAE,uni1EB0,uni1EB2,uni1EB4,uni1EB6" 	k="91" />
+<hkern g1="uni040E,uni0423,uni04EE,uni04F0,uni04F2" 	g2="a,agrave,aacute,acircumflex,atilde,adieresis,aring,amacron,abreve,aogonek,aringacute,uni0430,uni04D1,uni04D3,uni1E01,uni1EA1,uni1EA3,uni1EA5,uni1EA7,uni1EA9,uni1EAB,uni1EAD,uni1EAF,uni1EB1,uni1EB3,uni1EB5,uni1EB7" 	k="81" />
+<hkern g1="uni040E,uni0423,uni04EE,uni04F0,uni04F2" 	g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,cacute,ccircumflex,uni010B,ccaron,dcaron,emacron,ebreve,edotaccent,eogonek,ecaron,gcircumflex,gbreve,uni0121,gcommaaccent,oe,ohorn,alphatonos,alpha,sigma1,sigma,uni0435,uni0441,uni0444,uni0450,uni0451,uni0454,uni0479,uni047D,uni0481,uni04A9,uni04AB,uni04D7,uni04D9,uni04DB,uni04E9,uni0501,uni0502,uni0503,uni050D,uni1EB9,uni1EBB,uni1EBD,uni1EBF,uni1EC1,uni1EC3,uni1EC5,uni1EC7,uni1EDB,uni1EDD,uni1EDF,uni1EE3" 	k="67" />
+<hkern g1="uni040E,uni0423,uni04EE,uni04F0,uni04F2" 	g2="m,n,p,ntilde,nacute,ncommaaccent,ncaron,napostrophe,etatonos,eta,uni0433,uni0438,uni0439,uni043A,uni043C,uni043D,uni043F,uni0440,uni0446,uni0448,uni0449,uni044C,uni044E,uni0453,uni045A,uni045C,uni045D,uni048B,uni049B,uni04A3,uni04A5,uni04C8,uni04CA,uni04CE,uni04E3,uni04E5,uni04F7,uni04F9,uni04FB,uni1E3F" 	k="82" />
+<hkern g1="uni040E,uni0423,uni04EE,uni04F0,uni04F2" 	g2="o,ograve,oacute,ocircumflex,otilde,odieresis,omacron,obreve,ohungarumlaut,omicron,omicrontonos,uni043E,uni0473,uni04E7,uni04EB,uni1ECD,uni1ECF,uni1ED1,uni1ED3,uni1ED5,uni1ED7,uni1ED9,uni1EE1" 	k="67" />
+<hkern g1="uni040E,uni0423,uni04EE,uni04F0,uni04F2" 	g2="s,sacute,scircumflex,scedilla,scaron,scommaaccent,uni0455" 	k="46" />
+<hkern g1="uni040E,uni0423,uni04EE,uni04F0,uni04F2" 	g2="T,Tcommaaccent,Tcaron,uni0402,uni040B,uni0422,uni04A0,uni04AC,uni04B4" 	k="-18" />
+<hkern g1="uni040E,uni0423,uni04EE,uni04F0,uni04F2" 	g2="Y,Yacute,Ycircumflex,Ydieresis,Upsilontonos,Upsilon,Upsilondieresis,uni04AE,uni04B0,Ygrave,uni1EF4,uni1EF6,uni1EF8" 	k="-18" />
+<hkern g1="uni040E,uni0423,uni04EE,uni04F0,uni04F2" 	g2="comma,period,colon,quotesinglbase,quotedblbase,uni2025,ellipsis" 	k="393" />
+<hkern g1="uni040E,uni0423,uni04EE,uni04F0,uni04F2" 	g2="uni0409,uni041B,uni04C5,uni0508,uni0512" 	k="54" />
+<hkern g1="uni040E,uni0423,uni04EE,uni04F0,uni04F2" 	g2="uni043B,uni0459,uni04C6,uni0513" 	k="69" />
+<hkern g1="uni040E,uni0423,uni04EE,uni04F0,uni04F2" 	g2="uni0447,uni04B7,uni04CC,uni04F5" 	k="23" />
+<hkern g1="uni040E,uni0423,uni04EE,uni04F0,uni04F2" 	g2="hyphen,uni00AD,endash,emdash,uni2015" 	k="197" />
+<hkern g1="uni040E,uni0423,uni04EE,uni04F0,uni04F2" 	g2="C,G,O,Q,Ccedilla,Ograve,Oacute,Ocircumflex,Otilde,Odieresis,Oslash,Cacute,Ccircumflex,uni010A,Ccaron,Gcircumflex,Gbreve,uni0120,Gcommaaccent,Omacron,Obreve,Ohungarumlaut,OE,Ohorn,Oslashacute,Omicrontonos,Theta,Omicron,uni0404,uni041E,uni0421,uni0460,uni0472,uni0478,uni047A,uni047C,uni047E,uni0480,uni04A8,uni04AA,uni04E6,uni04E8,uni04EA,uni050C,uni1ECC,uni1ECE,uni1ED0,uni1ED2,uni1ED4,uni1ED6,uni1ED8,uni1EDA,uni1EDC,uni1EDE,uni1EE0,uni1EE2,uni1F4D" 	k="23" />
+<hkern g1="uni0433,uni0453,uni0491,uni04F7,uni04FB" 	g2="c,d,e,g,q,ccedilla,egrave,eacute,ecircumflex,edieresis,cacute,ccircumflex,uni010B,ccaron,dcaron,emacron,ebreve,edotaccent,eogonek,ecaron,gcircumflex,gbreve,uni0121,gcommaaccent,oe,ohorn,alphatonos,alpha,sigma1,sigma,uni0435,uni0441,uni0444,uni0450,uni0451,uni0454,uni0479,uni047D,uni0481,uni04A9,uni04AB,uni04D7,uni04D9,uni04DB,uni04E9,uni0501,uni0502,uni0503,uni050D,uni1EB9,uni1EBB,uni1EBD,uni1EBF,uni1EC1,uni1EC3,uni1EC5,uni1EC7,uni1EDB,uni1EDD,uni1EDF,uni1EE3" 	k="20" />
+<hkern g1="uni0433,uni0453,uni0491,uni04F7,uni04FB" 	g2="o,ograve,oacute,ocircumflex,otilde,odieresis,omacron,obreve,ohungarumlaut,omicron,omicrontonos,uni043E,uni0473,uni04E7,uni04EB,uni1ECD,uni1ECF,uni1ED1,uni1ED3,uni1ED5,uni1ED7,uni1ED9,uni1EE1" 	k="20" />
+<hkern g1="uni0433,uni0453,uni0491,uni04F7,uni04FB" 	g2="uni043B,uni0459,uni04C6,uni0513" 	k="40" />
+<hkern g1="uni044A,uni044C,uni0459,uni045A,uni0463" 	g2="quotedbl,quotesingle,uni02BC,quoteleft,quoteright,quotereversed,quotedblleft,quotedblright,minute,second" 	k="135" />
+<hkern g1="uni044A,uni044C,uni0459,uni045A,uni0463" 	g2="v,y,yacute,ydieresis,ycircumflex,gamma,nu,uni0443,uni045E,uni0475,uni0477,uni04AF,uni04EF,uni04F1,uni04F3,ygrave,uni1EF5,uni1EF7,uni1EF9" 	k="35" />
+<hkern g1="uni044A,uni044C,uni0459,uni045A,uni0463" 	g2="uni0447,uni04B7,uni04CC,uni04F5" 	k="19" />
+<hkern g1="uni044A,uni044C,uni0459,uni045A,uni0463" 	g2="x,uni0436,uni0445,uni0497,uni04B3,uni04C2,uni04DD,uni04FD" 	k="11" />
+</font>
+</defs></svg> 

BIN
ambari-admin/src/main/resources/ui/admin-web/app/assets/fonts/Roboto-Regular-webfont.ttf


BIN
ambari-admin/src/main/resources/ui/admin-web/app/assets/fonts/Roboto-Regular-webfont.woff


+ 45 - 52
ambari-admin/src/main/resources/ui/admin-web/app/index.html

@@ -44,53 +44,47 @@
 <p class="browsehappy">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</p>
 <![endif]-->
 
-<div id="top-nav" ng-controller="MainCtrl">
-  <header class="navbar navbar-static-top navbar-inverse">
-    <div class="navbar-inner">
-      <div class="container">
-        <a href="{{fromSiteRoot('/#/main/dashboard')}}" class="logo"><img src="/img/ambari-logo.png" alt="{{'common.apacheAmbari' | translate}}" title="{{'common.apacheAmbari' | translate}}" data-qa="ambari-logo"></a>
-        <a href="{{fromSiteRoot('/#/main/dashboard')}}" class="brand" title="{{'common.apacheAmbari' | translate}}" data-qa="ambari-title">{{'common.ambari' | translate}}</a>
-        <ul class="nav navbar-nav navbar-right">
-          <li>
-            <div class="btn-group navbar-views-dropdown" dropdown is-open="viewsdropdown.isopen" ng-mouseover="viewsdropdown.isopen=true" ng-mouseout="viewsdropdown.isopen=false">
-              <a href="{{fromSiteRoot('/#/main/views')}}" ng-click="gotoViewsDashboard()" class="dropdown-toggle"><i class="fa fa-th"></i></a>
-              <ul class="dropdown-menu" role="menu">
-                <li ng-repeat="instance in viewInstances"><a href="{{fromSiteRoot('/#/main/views/' + instance.viewUrl)}}" target="_blank">{{instance.label}}</a></li>
-                <li ng-show="!viewInstances.length" class="disabled"><a>{{'common.noViews' | translate}}</a></li>
-              </ul>
-            </div>
-          </li>
-          <li>
-            <div class="btn-group" dropdown is-open="status.isopen">
-              <button type="button" class="btn btn-default dropdown-toggle navbar-btn" ng-disabled="disabled">
-                <i class="fa fa-user"></i> {{currentUser}} <span class="caret"></span>
-              </button>
-              <ul class="dropdown-menu" role="menu">
-                <li><a href ng-click="about()">{{'common.about' | translate}}</a></li>
-                <li class="divider"></li>
-                <li><a href ng-click="signOut()">{{'common.signOut' | translate}}</a></li>
-              </ul>
-            </div>
-          </li>
-        </ul>
-      </div>
-    </div>
-  </header>
-</div>
+<div id="wrapper" ng-controller="AppCtrl">
 
+  <div ng-include="'views/sideNav.html'" ng-controller="SideNavCtrl"></div>
 
-<div class="container">
-  <div class="row">
-    <div class="col-sm-3">
-      <div ng-include="'views/leftNavbar.html'" ng-controller="NavbarCtrl"></div>
+  <div id="main">
+    <div id="top-nav">
+     <nav class="navbar navbar-default navbar-static-top">
+       <div class="container">
+         <div class="navbar-header navbar-nav">
+           <ol class="breadcrumb">
+             <li ng-repeat="breadcrumb in breadcrumbs" ng-class="$last && 'active'">{{breadcrumb}}</li>
+           </ol>
+         </div>
+         <ul class="nav navbar-nav navbar-right">
+           <li>
+             <p class="navbar-text">{{cluster.Clusters.cluster_name}}</p>
+           </li>
+           <li class="dropdown">
+             <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" ng-disabled="disabled">
+               <i class="fa fa-user"></i>&nbsp;{{currentUser}}&nbsp;<span class="caret"></span>
+             </a>
+             <ul class="dropdown-menu">
+               <li><a href ng-click="about()">{{'common.about' | translate}}</a></li>
+               <li role="separator" class="divider"></li>
+               <li><a href ng-click="signOut()">{{'common.signOut' | translate}}</a></li>
+             </ul>
+           </li>
+         </ul>
+       </div>
+     </nav>
     </div>
-    <div class="col-sm-9">
-      <ng-view></ng-view>
+    <div class="container main-container">
+      <div class="row">
+        <div class="col-sm-12">
+          <ng-view></ng-view>
+        </div>
+      </div>
     </div>
   </div>
 </div>
 
-
 <!-- build:js scripts/vendor.js -->
 <!-- bower:js -->
 <script src="bower_components/jquery/dist/jquery.js"></script>
@@ -119,6 +113,7 @@
 <script src="bower_components/bootstrap/js/scrollspy.js"></script>
 <script src="bower_components/bootstrap/js/collapse.js"></script>
 <script src="bower_components/bootstrap/js/tab.js"></script>
+<script src="scripts/theme/bootstrap-ambari.js"></script>
 
 <!-- endbuild -->
 
@@ -126,26 +121,25 @@
 <script src="scripts/app.js"></script>
 <script src="scripts/routes.js"></script>
 <script src="scripts/i18n.config.js"></script>
-<script src="scripts/controllers/mainCtrl.js"></script>
-<script src="scripts/controllers/NavbarCtrl.js"></script>
+<script src="scripts/controllers/clusters/ClusterInformationCtrl.js"></script>
+<script src="scripts/controllers/AppCtrl.js"></script>
+<script src="scripts/controllers/SideNavCtrl.js"></script>
 <script src="scripts/controllers/authentication/AuthenticationMainCtrl.js"></script>
 <script src="scripts/controllers/loginActivities/LoginActivitiesMainCtrl.js"></script>
 <script src="scripts/controllers/loginActivities/LoginMessageMainCtrl.js"></script>
 <script src="scripts/controllers/loginActivities/HomeDirectoryCtrl.js"></script>
-<script src="scripts/controllers/users/UsersCreateCtrl.js"></script>
-<script src="scripts/controllers/users/UsersListCtrl.js"></script>
-<script src="scripts/controllers/users/UsersShowCtrl.js"></script>
-<script src="scripts/controllers/groups/GroupsListCtrl.js"></script>
-<script src="scripts/controllers/groups/GroupsCreateCtrl.js"></script>
-<script src="scripts/controllers/groups/GroupsEditCtrl.js"></script>
+<script src="scripts/controllers/userManagement/UserManagementCtrl.js"></script>
+<script src="scripts/controllers/userManagement/UserCreateCtrl.js"></script>
+<script src="scripts/controllers/userManagement/UsersListCtrl.js"></script>
+<script src="scripts/controllers/userManagement/UserEditCtrl.js"></script>
+<script src="scripts/controllers/userManagement/GroupsListCtrl.js"></script>
+<script src="scripts/controllers/userManagement/GroupCreateCtrl.js"></script>
+<script src="scripts/controllers/userManagement/GroupEditCtrl.js"></script>
 <script src="scripts/controllers/ambariViews/ViewsListCtrl.js"></script>
 <script src="scripts/controllers/ambariViews/ViewsEditCtrl.js"></script>
 <script src="scripts/controllers/ambariViews/ViewUrlCtrl.js"></script>
 <script src="scripts/controllers/ambariViews/ViewUrlEditCtrl.js"></script>
 <script src="scripts/controllers/ambariViews/CreateViewInstanceCtrl.js"></script>
-<script src="scripts/controllers/clusters/ClustersManageAccessCtrl.js"></script>
-<script src="scripts/controllers/clusters/UserAccessListCtrl.js"></script>
-<script src="scripts/controllers/clusters/ExportBlueprintCtrl.js"></script>
 <script src="scripts/controllers/stackVersions/StackVersionsCreateCtrl.js"></script>
 <script src="scripts/controllers/stackVersions/StackVersionsListCtrl.js"></script>
 <script src="scripts/controllers/stackVersions/StackVersionsEditCtrl.js"></script>
@@ -159,7 +153,6 @@
 <script src="scripts/services/Utility.js"></script>
 <script src="scripts/services/UserConstants.js"></script>
 <script src="scripts/services/User.js"></script>
-<script src="scripts/services/GroupConstants.js"></script>
 <script src="scripts/services/Group.js"></script>
 <script src="scripts/services/RemoteCluster.js"></script>
 <script src="scripts/services/View.js"></script>

+ 3 - 2
ambari-admin/src/main/resources/ui/admin-web/app/scripts/app.js

@@ -33,7 +33,8 @@ angular.module('ambariAdminConsole', [
   isLDAPConfigurationSupported: false,
   isLoginActivitiesSupported: false,
   maxStackTraceLength: 1000,
-  errorStorageSize: 500000
+  errorStorageSize: 500000,
+  minRowsToShowPagination: 10
 })
 .config(['RestangularProvider', '$httpProvider', '$provide', 'Settings', function(RestangularProvider, $httpProvider, $provide, Settings) {
   // Config Ajax-module
@@ -62,7 +63,7 @@ angular.module('ambariAdminConsole', [
     };
   }]);
 
-  $httpProvider.responseInterceptors.push(['$rootScope', '$q', function (scope, $q) {
+  $httpProvider.interceptors.push(['$rootScope', '$q', function (scope, $q) {
     function success(response) {
       return response;
     }

+ 46 - 52
ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/mainCtrl.js → ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/AppCtrl.js

@@ -18,45 +18,57 @@
 'use strict';
 
 angular.module('ambariAdminConsole')
-.controller('MainCtrl',['$scope','$rootScope','$window','Auth', 'Alert', '$modal', 'Cluster', 'View', '$translate', '$http', 'Settings', 'Utility', '$q', function($scope, $rootScope, $window, Auth, Alert, $modal, Cluster, View, $translate, $http, Settings, Utility, $q) {
+.controller('AppCtrl',['$scope','$rootScope', '$route', '$window','Auth', 'Alert', '$modal', 'Cluster', '$translate', '$http', 'Settings', 'Utility', '$q', function($scope, $rootScope, $route, $window, Auth, Alert, $modal, Cluster, $translate, $http, Settings, Utility, $q) {
   var $t = $translate.instant;
-  $scope.signOut = function() {
-    Auth.signout().finally(function() {
+  $scope.signOut = function () {
+    Auth.signout().finally(function () {
       $window.location.pathname = Settings.siteRoot;
     });
   };
 
+  //todo replace with breadcrumb service
+  $scope.$watch(function () {
+    return $route.current;
+  }, function (value) {
+    var breadcrumbs = [$t('common.admin')];
+    if (value && value.$$route && value.$$route.label) {
+      breadcrumbs.push(value.$$route.label);
+    }
+    $scope.breadcrumbs = breadcrumbs;
+  });
+
+
   $scope.ambariVersion = null;
   $rootScope.supports = {};
   $rootScope.authDataLoad = $q.defer();
 
-  Utility.getUserPref('user-pref-' + Auth.getCurrentUser() + '-supports').then(function(data) {
+  Utility.getUserPref('user-pref-' + Auth.getCurrentUser() + '-supports').then(function (data) {
     $rootScope.supports = data.data ? data.data : {};
   });
 
   $http.get(Settings.baseUrl + '/users/' + Auth.getCurrentUser() + '/authorizations?fields=*')
-    .then(function(data) {
+    .then(function (data) {
       var auth = !!data.data && !!data.data.items ? data.data.items.map(function (a) {
           return a.AuthorizationInfo.authorization_id;
         }) : [],
         canPersistData = auth.indexOf('CLUSTER.MANAGE_USER_PERSISTED_DATA') > -1;
       $rootScope.authDataLoad.resolve(canPersistData);
-      if(auth.indexOf('AMBARI.RENAME_CLUSTER') == -1) {
+      if (auth.indexOf('AMBARI.RENAME_CLUSTER') == -1) {
         $window.location = $rootScope.fromSiteRoot("/#/main/dashboard");
       }
     });
 
-  $scope.about = function() {
-   var ambariVersion = $scope.ambariVersion;
-  	var modalInstance = $modal.open({
-  		templateUrl:'views/modals/AboutModal.html',
-  		controller: ['$scope', function($scope) {
-  			$scope.ok = function() {
-  				modalInstance.close();
-  			};
+  $scope.about = function () {
+    var ambariVersion = $scope.ambariVersion;
+    var modalInstance = $modal.open({
+      templateUrl: 'views/modals/AboutModal.html',
+      controller: ['$scope', function ($scope) {
+        $scope.ok = function () {
+          modalInstance.close();
+        };
         $scope.ambariVersion = ambariVersion;
-  		}]
-  	});
+      }]
+    });
   };
 
   $scope.currentUser = Auth.getCurrentUser();
@@ -65,50 +77,33 @@ angular.module('ambariAdminConsole')
   $scope.isLoaded = null;
 
   function loadAmbariVersion() {
-    Cluster.getAmbariVersion().then(function(version){
+    Cluster.getAmbariVersion().then(function (version) {
       $scope.ambariVersion = version;
     });
   }
 
-  function loadClusterData(){
-    Cluster.getStatus().then(function(cluster) {
+  function loadClusterData() {
+    Cluster.getStatus().then(function (cluster) {
+      $rootScope.cluster = cluster;
       $scope.cluster = cluster;
       $scope.isLoaded = true;
-      if(cluster && cluster.Clusters.provisioning_state === 'INIT'){
+      if (cluster && cluster.Clusters.provisioning_state === 'INIT') {
         setTimeout(loadClusterData, 1000);
       }
-    }).catch(function(data) {
+    }).catch(function (data) {
       Alert.error($t('common.alerts.cannotLoadClusterStatus'), data.statusText);
     });
   }
+
   loadClusterData();
   loadAmbariVersion();
 
-  $scope.viewInstances = [];
-
-  $scope.updateInstances = function () {
-    View.getAllVisibleInstance().then(function(instances) {
-      $scope.viewInstances = instances.map(function(i) {
-        i.viewUrl = i.view_name + '/' + i.version + '/' + i.instance_name;
-        return i;
-      });
-    });
-  };
-
-  $scope.gotoViewsDashboard =function() {
-    window.location = Settings.siteRoot + '#/main/views';
-  };
-
-  $scope.$root.$on('instancesUpdate', function (event, data) {
-    $scope.updateInstances();
-  });
-
-  $scope.startInactiveTimeoutMonitoring = function(timeout) {
+  $scope.startInactiveTimeoutMonitoring = function (timeout) {
     var TIME_OUT = timeout;
     var active = true;
     var lastActiveTime = Date.now();
 
-    var keepActive = function() {
+    var keepActive = function () {
       if (active) {
         lastActiveTime = Date.now();
       }
@@ -118,7 +113,7 @@ angular.module('ambariAdminConsole')
     $(window).bind('keypress', keepActive);
     $(window).bind('click', keepActive);
 
-    var checkActiveness = function() {
+    var checkActiveness = function () {
       var remainTime = TIME_OUT - (Date.now() - lastActiveTime);
       if (remainTime < 0) {
         active = false;
@@ -131,27 +126,27 @@ angular.module('ambariAdminConsole')
         $rootScope.timeoutModal = $modal.open({
           templateUrl: 'views/modals/TimeoutWarning.html',
           backdrop: false,
-          controller: ['$scope', 'Auth', function($scope, Auth) {
+          controller: ['$scope', 'Auth', function ($scope, Auth) {
             $scope.remainTime = 60;
             $scope.title = $t('main.autoLogOut');
             $scope.primaryText = $t('main.controls.remainLoggedIn');
             $scope.secondaryText = $t('main.controls.logOut');
-            $scope.remain = function() {
+            $scope.remain = function () {
               $rootScope.timeoutModal.close();
               delete $rootScope.timeoutModal;
             };
-            $scope.logout = function() {
+            $scope.logout = function () {
               $rootScope.timeoutModal.close();
               delete $rootScope.timeoutModal;
-              Auth.signout().finally(function() {
+              Auth.signout().finally(function () {
                 $window.location.pathname = Settings.siteRoot;
               });
             };
-            $scope.countDown = function() {
+            $scope.countDown = function () {
               $scope.remainTime--;
               $scope.$apply();
               if ($scope.remainTime == 0) {
-                Auth.signout().finally(function() {
+                Auth.signout().finally(function () {
                   $window.location.pathname = Settings.siteRoot;
                 });
               }
@@ -165,12 +160,12 @@ angular.module('ambariAdminConsole')
   };
 
   // Send noop requests every 10 seconds just to keep backend session alive
-  $scope.startNoopPolling = function() {
+  $scope.startNoopPolling = function () {
     $rootScope.noopPollingInterval = setInterval(Cluster.getAmbariTimeout, 10000);
   };
 
   if (!$rootScope.userActivityTimeoutInterval) {
-    Cluster.getAmbariTimeout().then(function(timeout) {
+    Cluster.getAmbariTimeout().then(function (timeout) {
       $rootScope.userTimeout = Number(timeout) * 1000;
       if ($rootScope.userTimeout > 0)
         $scope.startInactiveTimeoutMonitoring($rootScope.userTimeout);
@@ -179,5 +174,4 @@ angular.module('ambariAdminConsole')
   if (!$rootScope.noopPollingInterval) {
     $scope.startNoopPolling();
   }
-  $scope.updateInstances();
 }]);

+ 0 - 106
ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/NavbarCtrl.js

@@ -1,106 +0,0 @@
-/**
- * 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.
- */
-'use strict';
-
-angular.module('ambariAdminConsole')
-.controller('NavbarCtrl',['$scope', 'Cluster', '$location', 'Alert', 'ROUTES', 'ConfirmationModal', '$rootScope', 'Stack', '$translate', 'Settings', function($scope, Cluster, $location, Alert, ROUTES, ConfirmationModal, $rootScope, Stack, $translate, Settings) {
-  var $t = $translate.instant;
-  $scope.cluster = null;
-  $scope.totalRepos = 0;
-  $scope.editCluster = {
-    name        : '',
-    editingName : false
-  };
-  $scope.settings = Settings;
-
-  function loadClusterData() {
-    Cluster.getStatus().then(function (cluster) {
-      $scope.cluster = cluster;
-      Stack.allRepos({version: '',
-        cluster: {
-          options: [],
-          current: null
-        }}, {}).then(function (repos) {
-          $scope.totalRepos = repos.itemTotal;
-        });
-      if (cluster && cluster.Clusters.provisioning_state === 'INIT') {
-        setTimeout(loadClusterData, 1000);
-      }
-    }).catch(function (data) {
-      Alert.error($t('common.alerts.cannotLoadClusterStatus'), data.statusText);
-    });
-  }
-  loadClusterData();
-
-  $scope.toggleEditName = function($event) {
-    if ($event && $event.keyCode !== 27) {
-      // 27 = Escape key
-      return false;
-    }
-
-    $scope.editCluster.name         = $scope.cluster.Clusters.cluster_name;
-    $scope.editCluster.editingName  = !$scope.editCluster.editingName;
-  };
-
-  $scope.clusterDisplayName = function () {
-    var name="";
-    if($scope.cluster && $scope.cluster.Clusters)
-    {
-       name = $scope.cluster.Clusters.cluster_name;
-    }
-    return name.length > 13 ? name.substr(0, 13) + "..." : name;
-  };
-
-  $scope.confirmClusterNameChange = function() {
-    ConfirmationModal.show(
-      $t('common.clusterNameChangeConfirmation.title'),
-      $t('common.clusterNameChangeConfirmation.message', {
-        clusterName: $scope.editCluster.name
-      })
-    )
-      .then(function() {
-        $scope.saveClusterName();
-      }).catch(function() {
-        // user clicked cancel
-        $scope.toggleEditName();
-      });
-  };
-
-  $scope.saveClusterName = function() {
-    var oldClusterName = $scope.cluster.Clusters.cluster_name,
-        newClusterName = $scope.editCluster.name;
-
-    Cluster.editName(oldClusterName, newClusterName).then(function(data) {
-      $scope.cluster.Clusters.cluster_name = newClusterName;
-      Alert.success($t('common.alerts.clusterRenamed', {clusterName: newClusterName}));
-    }).catch(function(data) {
-      Alert.error($t('common.alerts.cannotRenameCluster', {clusterName: newClusterName}), data.data.message);
-    });
-
-    $scope.toggleEditName();
-  };
-
-  $scope.isActive = function(path) {
-  	var route = ROUTES;
-  	angular.forEach(path.split('.'), function(routeObj) {
-  		route = route[routeObj];
-  	});
-  	var r = new RegExp( route.url.replace(/(:\w+)/, '\\w+'));
-  	return r.test($location.path());
-  };
-}]);

+ 68 - 0
ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/SideNavCtrl.js

@@ -0,0 +1,68 @@
+/**
+ * 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.
+ */
+'use strict';
+
+angular.module('ambariAdminConsole')
+.controller('SideNavCtrl', ['$scope', '$location', 'ROUTES', '$rootScope', 'Stack', 'Settings', function($scope, $location, ROUTES, $rootScope, Stack, Settings) {
+  $scope.totalRepos = 0;
+  $scope.settings = Settings;
+
+  $scope.$watch(function() {
+    return $rootScope.cluster;
+  }, function() {
+    $scope.cluster = $rootScope.cluster;
+  }, true);
+
+  function loadRepos() {
+    Stack.allRepos({version: '',
+      cluster: {
+        options: [],
+        current: null
+      }}, {}).then(function (repos) {
+      $scope.totalRepos = repos.itemTotal;
+    });
+  }
+
+  function initNavigationBar () {
+    $('body').on('DOMNodeInserted', '.navigation-bar', function() {
+      $('.navigation-bar').navigationBar({
+        fitHeight: true,
+        collapseNavBarClass: 'fa-angle-double-left',
+        expandNavBarClass: 'fa-angle-double-right'
+      });
+      //initTooltips();
+      $('body').off('DOMNodeInserted', '.navigation-bar');
+    });
+  }
+
+  function initTooltips () {
+    $('[rel="tooltip"]').tooltip();
+  }
+
+  initNavigationBar();
+  loadRepos();
+
+  $scope.isActive = function(path) {
+    var route = ROUTES;
+    angular.forEach(path.split('.'), function(routeObj) {
+      route = route[routeObj];
+    });
+    var r = new RegExp( route.url.replace(/(:\w+)/, '\\w+'));
+    return r.test($location.path());
+  };
+}]);

+ 195 - 211
ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/CreateViewInstanceCtrl.js

@@ -18,263 +18,247 @@
 'use strict';
 
 angular.module('ambariAdminConsole')
-.controller('CreateViewInstanceCtrl',['$scope', 'View','RemoteCluster' , 'Alert', 'Cluster', '$routeParams', '$location', 'UnsavedDialog', '$translate', function($scope, View, RemoteCluster, Alert, Cluster, $routeParams, $location, UnsavedDialog, $translate) {
+.controller('CreateViewInstanceCtrl',
+['$scope', 'View','RemoteCluster' , 'Alert', 'Cluster', '$routeParams', '$location', 'UnsavedDialog', '$translate', '$modalInstance', 'views', 'instanceClone', '$q',
+function($scope, View, RemoteCluster, Alert, Cluster, $routeParams, $location, UnsavedDialog, $translate, $modalInstance, views, instanceClone, $q) {
+
   var $t = $translate.instant;
+  var viewToVersionMap = {};
+  var instances = {};
   $scope.form = {};
-  $scope.constants = {
-    props: $t('views.properties')
+  $scope.nameValidationPattern = /^\s*\w*\s*$/;
+  $scope.isLoading = false;
+  $scope.clusterType = 'LOCAL_AMBARI'; // LOCAL_AMBARI, REMOTE_AMBARI, NONE
+  $scope.views = views;
+  $scope.instanceClone = instanceClone;
+  $scope.viewOptions = [];
+  $scope.versionOptions = [];
+  $scope.localClusters = [];
+  $scope.remoteClusters = [];
+  $scope.clusterOptions = [];
+  $scope.fieldsWithErrors = [];
+  $scope.isInstanceExists = false;
+  $scope.clusterConfigurable = false;
+  $scope.clusterSettingsCount = 0;
+  $scope.nonClusterSettingsCount = 0;
+  $scope.instanceTemplate = null;
+  $scope.formData = {
+    view: null,
+    version: null,
+    instanceName: '',
+    displayName: '',
+    description: '',
+    clusterName: null,
+    visible: true,
+    settings: []
   };
-  $scope.isClone = $routeParams.instanceId ? true : false;
-  var targetUrl = '';
-
-  function loadMeta(){
-    View.getMeta($routeParams.viewId, $scope.version).then(function(data) {
-      var viewVersion = data.data,
-        parameters;
-
-      $scope.view = viewVersion;
-      parameters = viewVersion.ViewVersionInfo.parameters;
 
-      angular.forEach(parameters, function (item) {
-        item.value = item['defaultValue'];
-        item.clusterConfig = !!item.clusterConfig;
-        item.displayName = item.name.replace(/\./g, '\.\u200B');
-        item.clusterConfig ? $scope.numberOfClusterConfigs++ : $scope.numberOfSettingConfigs++;
-      });
-
-      $scope.clusterConfigurable = viewVersion.ViewVersionInfo.cluster_configurable;
-      $scope.clusterConfigurableErrorMsg = $scope.clusterConfigurable ? "" : $t('views.alerts.cannotUseOption');
-
-      $scope.instance = {
-        view_name: viewVersion.ViewVersionInfo.view_name,
-        version: viewVersion.ViewVersionInfo.version,
-        instance_name: '',
-        label: '',
-        visible: true,
-        icon_path: '',
-        icon64_path: '',
-        properties: parameters,
-        description: '',
-        clusterType: 'NONE'
-      };
+  $scope.updateVersionOptions = function () {
+    if (viewToVersionMap[$scope.formData.view.value]) {
+      $scope.versionOptions = viewToVersionMap[$scope.formData.view.value];
+      $scope.formData.version = $scope.versionOptions[0];
+      $scope.updateSettingsList();
+    }
+  };
 
-      //if cloning view instance, then get the instance data and populate settings and properties
-      if($scope.isClone) {
-        View.getInstance($routeParams.viewId, $routeParams.version, $routeParams.instanceId)
-        .then(function(instance) {
-          $scope.instanceClone = instance;
-          $scope.instance.version = instance.ViewInstanceInfo.version;
-          $scope.version =  instance.ViewInstanceInfo.version;
-          $scope.instance.instance_name = instance.ViewInstanceInfo.instance_name + $t('common.copy');
-          $scope.instance.label = instance.ViewInstanceInfo.label + $t('common.copy');
-          $scope.instance.visible = instance.ViewInstanceInfo.visible;
-          $scope.instance.description = instance.ViewInstanceInfo.description;
-          $scope.instance.clusterType=instance.ViewInstanceInfo.cluster_type;
-          
-          initConfigurations(parameters);
-        })
-        .catch(function(data) {
-          Alert.error($t('views.alerts.cannotLoadInstanceInfo'), data.data.message);
+  $scope.updateSettingsList = function() {
+    $scope.formData.settings = [];
+    $scope.clusterSettingsCount = 0;
+    $scope.nonClusterSettingsCount = 0;
+    $scope.instanceTemplate = null;
+    angular.forEach($scope.views, function(view) {
+      if (view.view_name === $scope.formData.view.value) {
+        angular.forEach(view.versionsList, function(version) {
+          if (version.ViewVersionInfo.version === $scope.formData.version.value) {
+            $scope.formData.settings = version.ViewVersionInfo.parameters.map(function(param) {
+              param.value = param['defaultValue'];
+              param.clusterConfig = Boolean(param.clusterConfig);
+              param.displayName = param.name.replace(/\./g, '\.\u200B');
+              $scope.clusterSettingsCount += param.clusterConfig;
+              $scope.nonClusterSettingsCount += !param.clusterConfig;
+              return param;
+            });
+            $scope.clusterConfigurable = version.ViewVersionInfo.cluster_configurable;
+          }
         });
       }
-
-      loadClusters();
-      loadRemoteClusters();
-
     });
-  }
-
-   function initConfigurations(parameters) {
-      var configuration = angular.copy($scope.instanceClone.ViewInstanceInfo.properties);
-
-      //iterate through the view parameters and get the values from the instance being cloned
-      for (var i = 0; i < parameters.length; i++) {
-        parameters[i].value = configuration[parameters[i].name];
-        parameters[i].clusterConfig = !!parameters[i].clusterConfig;
-      }
-    }
-
-  $scope.$watch(function(scope) {
-    return scope.version;
-  }, function(version) {
-    if( version ){
-      loadMeta();
-    }
-  });
+  };
 
-  $scope.enableLocalCluster = function () {
-    if($scope.errorKeys.length > 0) {
-      $scope.errorKeys.forEach( function (key) {
-        try {
-          $scope.form.instanceCreateForm[key].validationError = false;
-          $scope.form.instanceCreateForm[key].validationMessage = '';
-        } catch (e) {
-          console.log($t('views.alerts.unableToResetErrorMessage', {key: key}));
-        }
-      });
-      $scope.errorKeys = [];
+  $scope.switchClusterType = function(clusterType) {
+    $scope.clusterType = clusterType;
+    if (clusterType === 'LOCAL_AMBARI') {
+      $scope.clusterOptions = $scope.localClusters;
+      resetErrors();
+    } else if (clusterType === 'REMOTE_AMBARI') {
+      $scope.clusterOptions = $scope.remoteClusters;
+      resetErrors();
+    } else {
+      $scope.clusterOptions = [];
     }
+    $scope.formData.clusterName = $scope.clusterOptions[0];
   };
 
-  // $scope.view = viewVersion;
-  $scope.isAdvancedClosed = true;
-  $scope.instanceExists = false;
-  $scope.errorKeys = [];
-
-  $scope.clusterConfigurable = false;
-  $scope.clusterConfigurableErrorMsg = "";
-  $scope.clusters = [];
-  $scope.remoteClusters = [];
-  $scope.noLocalClusterAvailible = true;
-  $scope.noRemoteClusterAvailible = true;
-  $scope.cluster = null;
-  $scope.data = {};
-  $scope.data.remoteCluster = null;
-  $scope.numberOfClusterConfigs = 0;
-  $scope.numberOfSettingConfigs = 0;
-
-  function loadClusters() {
-       Cluster.getAllClusters().then(function (clusters) {
-         if(clusters.length >0){
-           clusters.forEach(function(cluster) {
-             $scope.clusters.push({
-              "name" : cluster.Clusters.cluster_name,
-              "id" : cluster.Clusters.cluster_id
-             })
-           });
-           $scope.noLocalClusterAvailible = false;
-           //do not set to default Local Cluster configuration when cloning instance
-           if($scope.clusterConfigurable && !$scope.isClone){
-             $scope.instance.clusterType = "LOCAL_AMBARI";
-           }
-         }else{
-           $scope.clusters.push($t('common.noClusters'));
-         }
-         $scope.cluster = $scope.clusters[0];
-       });
-  }
-
-   function loadRemoteClusters() {
-         RemoteCluster.listAll().then(function (clusters) {
-           if(clusters.length >0){
-             clusters.forEach(function(cluster) {
-               $scope.remoteClusters.push({
-                "name" : cluster.ClusterInfo.name,
-                "id" : cluster.ClusterInfo.cluster_id
-               })
-             });
-             $scope.noRemoteClusterAvailible = false;
-           }else{
-             $scope.remoteClusters.push($t('common.noClusters'));
-           }
-           $scope.data.remoteCluster = $scope.remoteClusters[0];
-         });
-   }
-
-
-  $scope.versions = [];
-  $scope.version = null;
-
-  View.getVersions($routeParams.viewId).then(function(versions) {
-    $scope.versions = versions;
-    $scope.version = $scope.versions[$scope.versions.length-1];
-  });
-
-
-  $scope.nameValidationPattern = /^\s*\w*\s*$/;
-
-  $scope.save = function() {
-  if (!$scope.form.instanceCreateForm.isSaving) {
+  $scope.save = function () {
+    var instanceName = $scope.form.instanceCreateForm.instanceName.$viewValue;
     $scope.form.instanceCreateForm.submitted = true;
-    if($scope.form.instanceCreateForm.$valid){
-      $scope.form.instanceCreateForm.isSaving = true;
-
-      switch($scope.instance.clusterType) {
-        case 'LOCAL_AMBARI':
-          console.log($scope.cluster);
-          $scope.instance.clusterId = $scope.cluster.id;
-          break;
-        case 'REMOTE_AMBARI':
-          console.log($scope.data.remoteCluster);
-          $scope.instance.clusterId = $scope.data.remoteCluster.id;
-
-          break;
-        default:
-          $scope.instance.clusterId = null;
-      }
-      console.log($scope.instance.clusterId);
-      View.createInstance($scope.instance)
-        .then(function(data) {
-          Alert.success($t('views.alerts.instanceCreated', {instanceName: $scope.instance.instance_name}));
-          $scope.form.instanceCreateForm.$setPristine();
-          if( targetUrl ){
-            $location.path(targetUrl);
-          } else {
-            $location.path('/views/' + $scope.instance.view_name + '/versions/' + $scope.instance.version + '/instances/' + $scope.instance.instance_name + '/edit');
-          }
-            $scope.form.instanceCreateForm.isSaving = false;
-            $scope.$root.$emit('instancesUpdate');
+    if ($scope.form.instanceCreateForm.$valid) {
+      View.createInstance({
+        instance_name: instanceName,
+        label: $scope.form.instanceCreateForm.displayName.$viewValue,
+        visible: $scope.form.instanceCreateForm.visible.$viewValue,
+        icon_path: '',
+        icon64_path: '',
+        description: $scope.form.instanceCreateForm.description.$viewValue,
+        view_name: $scope.form.instanceCreateForm.view.$viewValue.value,
+        version: $scope.form.instanceCreateForm.version.$viewValue.value,
+        properties: $scope.formData.settings,
+        clusterId: $scope.formData.clusterName ? $scope.formData.clusterName.id : null,
+        clusterType: $scope.clusterType
+      })
+        .then(function () {
+          $modalInstance.dismiss('created');
+          Alert.success($t('views.alerts.instanceCreated', {instanceName: instanceName}));
+          $location.path('/views/' + $scope.form.instanceCreateForm.view.$viewValue.value +
+            '/versions/' + $scope.form.instanceCreateForm.version.$viewValue.value +
+            '/instances/' + instanceName + '/edit');
         })
         .catch(function (data) {
           var errorMessage = data.message;
-          var showGeneralError = true;
 
-          if (data.status >= 400 && $scope.instance.clusterType == 'NONE') {
+          if (data.status >= 400) {
             try {
               var errorObject = JSON.parse(errorMessage);
               errorMessage = errorObject.detail;
               angular.forEach(errorObject.propertyResults, function (item, key) {
                 $scope.form.instanceCreateForm[key].validationError = !item.valid;
                 if (!item.valid) {
-                  showGeneralError = false;
                   $scope.form.instanceCreateForm[key].validationMessage = item.detail;
-                  $scope.errorKeys.push(key);
+                  $scope.fieldsWithErrors.push(key);
                 }
               });
 
-              if (showGeneralError) {
-                $scope.form.instanceCreateForm.generalValidationError = errorMessage;
-              }
             } catch (e) {
-              console.error($t('views.alerts.unableToParseError', {message: data.message}));
+              console.warn(data.message, e);
             }
           }
           Alert.error($t('views.alerts.cannotCreateInstance'), errorMessage);
-          $scope.form.instanceCreateForm.isSaving = false;
         });
-      }
     }
   };
 
-  $scope.cancel = function() {
-    $scope.form.instanceCreateForm.$setPristine();
-    $location.path('/views');
+  $scope.cancel = function () {
+    unsavedChangesCheck();
   };
 
-  $scope.$on('$locationChangeStart', function(event, __targetUrl) {
-    if( $scope.form.instanceCreateForm.$dirty ){
-      UnsavedDialog().then(function(action) {
-        targetUrl = __targetUrl.split('#').pop();
-        switch(action){
+  $scope.checkIfInstanceExist = function() {
+    $scope.isInstanceExists = Boolean(instances[$scope.formData.instanceName]);
+  };
+
+  function resetErrors() {
+    $scope.fieldsWithErrors.forEach(function(field) {
+      $scope.form.instanceCreateForm[field].validationError = false;
+      $scope.form.instanceCreateForm[field].validationMessage = '';
+    });
+    $scope.fieldsWithErrors = [];
+  }
+
+  function initViewAndVersionSelect () {
+    $scope.viewOptions = [];
+    angular.forEach($scope.views, function(view) {
+      $scope.viewOptions.push({
+        label: view.view_name,
+        value: view.view_name
+      });
+      viewToVersionMap[view.view_name] = view.versionsList.map(function(version) {
+        angular.forEach(version.instances, function(instance) {
+          instances[instance.ViewInstanceInfo.instance_name] = true;
+        });
+        return {
+          label: version.ViewVersionInfo.version,
+          value: version.ViewVersionInfo.version
+        }
+      });
+    });
+    $scope.formData.view = $scope.viewOptions[0];
+    $scope.updateVersionOptions();
+  }
+
+  function loadClusters() {
+    return Cluster.getAllClusters().then(function (clusters) {
+      clusters.forEach(function (cluster) {
+        $scope.localClusters.push({
+          label: cluster.Clusters.cluster_name,
+          value: cluster.Clusters.cluster_name,
+          id: cluster.Clusters.cluster_id
+        });
+      });
+    });
+  }
+
+  function loadRemoteClusters() {
+    return RemoteCluster.listAll().then(function (clusters) {
+      clusters.forEach(function (cluster) {
+        $scope.remoteClusters.push({
+          label: cluster.ClusterInfo.name,
+          value: cluster.ClusterInfo.name,
+          id: cluster.ClusterInfo.cluster_id
+        });
+      });
+    });
+  }
+
+  function loadFormData () {
+    $scope.isLoading = true;
+    initViewAndVersionSelect();
+    $q.all(loadClusters(), loadRemoteClusters()).then(function() {
+      $scope.isLoading = false;
+      $scope.switchClusterType('LOCAL_AMBARI');
+      copyCloneInstanceInfo();
+    });
+  }
+
+  function copyCloneInstanceInfo() {
+    if ($scope.instanceClone) {
+      $scope.formData.view = $scope.viewOptions.filter(function(option) {
+        return option.value === $scope.instanceClone.view_name;
+      })[0];
+      $scope.updateVersionOptions();
+      $scope.formData.version = $scope.versionOptions.filter(function(option) {
+        return option.value === $scope.instanceClone.version;
+      })[0];
+      $scope.formData.instanceName = $scope.instanceClone.instance_name + $t('common.copy');
+      $scope.formData.displayName = $scope.instanceClone.label + $t('common.copy');
+      $scope.formData.description = $scope.instanceClone.description;
+      $scope.formData.visible = $scope.instanceClone.visible;
+      $scope.switchClusterType($scope.instanceClone.cluster_type);
+      $scope.updateSettingsList();
+      $scope.formData.settings.forEach(function (setting) {
+        if ($scope.instanceClone.properties[setting.name]) {
+          setting.value = $scope.instanceClone.properties[setting.name];
+        }
+      });
+    }
+  }
+
+  function unsavedChangesCheck() {
+    if ($scope.form.instanceCreateForm.$dirty) {
+      UnsavedDialog().then(function (action) {
+        switch (action) {
           case 'save':
             $scope.save();
             break;
           case 'discard':
-            $scope.form.instanceCreateForm.$setPristine();
-            $location.path(targetUrl);
+            $modalInstance.close('discard');
             break;
           case 'cancel':
-            targetUrl = '';
             break;
         }
       });
-      event.preventDefault();
+    } else {
+      $modalInstance.close('discard');
     }
-  });
-
-
-
-
-
+  }
 
+  loadFormData();
 }]);

+ 141 - 220
ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/ambariViews/ViewsListCtrl.js

@@ -18,272 +18,193 @@
 'use strict';
 
 angular.module('ambariAdminConsole')
-.controller('ViewsListCtrl',['$scope', 'View','$modal', 'Alert', 'ConfirmationModal', '$location', '$translate', function($scope, View, $modal, Alert, ConfirmationModal, $location, $translate) {
-  var deferredList = [],
-    $t = $translate.instant;
-  $scope.isLoadingViews = false;
-  $scope.isLoadingUrls = false;
-  $scope.constants = {
-    unable: $t('views.alerts.unableToCreate'),
-    views: $t('common.views').toLowerCase()
-  };
-  $scope.$on('$locationChangeStart', function() {
-    deferredList.forEach(function(def) {
-      def.reject();
-    })
-  });
-
-  $scope.createUrlDisabled = false;
+.controller('ViewsListCtrl',['$scope', 'View','$modal', 'Alert', 'ConfirmationModal', '$translate', 'Settings', function($scope, View, $modal, Alert, ConfirmationModal, $translate, Settings) {
+  var $t = $translate.instant;
+  var VIEWS_VERSION_STATUS_TIMEOUT = 5000;
+  $scope.isLoading = false;
+  $scope.minInstanceForPagination = Settings.minRowsToShowPagination;
 
-  function checkViewVersionStatus(view, versionObj, versionNumber){
+  function checkViewVersionStatus(view, versionObj, versionNumber) {
     var deferred = View.checkViewVersionStatus(view.view_name, versionNumber);
-    deferredList.push(deferred);
 
-    deferred.promise.then(function(status) {
-      deferredList.splice(deferredList.indexOf(deferred), 1);
-      if (status !== 'DEPLOYED' && status !== 'ERROR') {
-        checkViewVersionStatus(view, versionObj, versionNumber);
+    deferred.promise.then(function (status) {
+      if (versionNeedStatusUpdate(status)) {
+        setTimeout(function() {
+          checkViewVersionStatus(view, versionObj, versionNumber);
+        }, VIEWS_VERSION_STATUS_TIMEOUT);
       } else {
-        $scope.$evalAsync(function() {
-          versionObj.status = status;
-          angular.forEach(view.versions, function(version) {
-            if(version.status === 'DEPLOYED'){
-              view.canCreateInstance = true;
-            }
-          })
-        });
+        versionObj.status = status;
+        angular.forEach(view.versions, function (version) {
+          if (version.status === 'DEPLOYED') {
+            view.canCreateInstance = true;
+          }
+        })
       }
     });
   }
 
-  function loadViews(){
-    $scope.isLoadingViews = true;
-    View.all().then(function(views) {
-      $scope.isLoadingViews = false;
+  function versionNeedStatusUpdate(status) {
+    return status !== 'DEPLOYED' && status !== 'ERROR';
+  }
+
+  function loadViews() {
+    $scope.isLoading = true;
+    View.all().then(function (views) {
+      $scope.isLoading = false;
       $scope.views = views;
-      $scope.getFilteredViews();
-      angular.forEach(views, function(view) {
-        angular.forEach(view.versions, function(versionObj, versionNumber) {
-          if (versionObj.status !== 'DEPLOYED' || versionObj.status !== 'ERROR'){
+      $scope.instances = [];
+      angular.forEach(views, function (view) {
+        angular.forEach(view.versions, function (versionObj, versionNumber) {
+          if (versionNeedStatusUpdate(versionObj.status)) {
             checkViewVersionStatus(view, versionObj, versionNumber);
           }
         });
-      })
-    }).catch(function(data) {
+        angular.forEach(view.instances, function (instance) {
+          instance.ViewInstanceInfo.short_url_name = instance.ViewInstanceInfo.short_url_name || '';
+          instance.ViewInstanceInfo.short_url = instance.ViewInstanceInfo.short_url || '';
+          instance.ViewInstanceInfo.versionObj = view.versions[instance.ViewInstanceInfo.version] || {};
+          $scope.instances.push(instance.ViewInstanceInfo);
+        });
+      });
+      initTypeFilter();
+      $scope.filterInstances();
+    }).catch(function (data) {
       Alert.error($t('views.alerts.cannotLoadViews'), data.data.message);
     });
   }
 
-  loadViews();
+  function initTypeFilter() {
+    var uniqTypes = $.unique($scope.instances.map(function(instance) {
+      return instance.view_name;
+    }));
+    $scope.typeFilterOptions = [ { label: $t('common.all'), value: '*'} ]
+      .concat(uniqTypes.map(function(type) {
+        return {
+          label: type,
+          value: type
+        };
+      }));
+    $scope.instanceTypeFilter = $scope.typeFilterOptions[0];
+  }
 
-  $scope.createInstance = function(view) {
-    var modalInstance = $modal.open({
-      templateUrl: 'views/ambariViews/modals/create.html',
-      size: 'lg',
-      controller: 'CreateViewInstanceCtrl',
-      resolve: {
-        viewVersion: function(){
-          return view.versionsList[ view.versionsList.length-1];
+  function showInstancesOnPage() {
+    var startIndex = ($scope.currentPage - 1) * $scope.instancesPerPage + 1;
+    var endIndex = $scope.currentPage * $scope.instancesPerPage;
+    var showedCount = 0;
+    var filteredCount = 0;
+
+    angular.forEach($scope.instances, function(instance) {
+      instance.isShowed = false;
+      if (instance.isFiltered) {
+        filteredCount++;
+        if (filteredCount >= startIndex && filteredCount <= endIndex) {
+          instance.isShowed = true;
+          showedCount++;
         }
       }
     });
+    $scope.tableInfo.showed = showedCount;
+  }
 
-    modalInstance.result.then(loadViews);
-  };
-
-  $scope.viewsFilter = '';
-  $scope.filteredViews = [];
-  $scope.getFilteredViews = function(views) {
-    var result = [];
-    var filter = $scope.viewsFilter.toLowerCase();
-    if(!filter){  // if no filter return all views
-      result = $scope.views.map(function(view) {
-        view.isOpened = false;
-        return view;
-      });
-    } else {
-      result = $scope.views.map(function(view) {
-        view.isOpened = true;
-        if(view.view_name.toLowerCase().indexOf(filter) >= 0){
-          return view; // if filter matched with view name -- return whole view
-        } else {
-          var instances = [];
-          angular.forEach(view.instances, function(instance) {
-            if(instance.ViewInstanceInfo.label.toLowerCase().indexOf(filter) >= 0){
-              instances.push(instance);
-            }
-          });
-          if( instances.length ){ // If inside view exists instances with matched filter - show only this instances
-            var v = angular.copy(view);
-            v.instances = instances;
-            return v;
-          }
-        }
-      }).filter(function(view) {
-        return !!view; // Remove 'undefined'
-      });
-    }
-    $scope.filteredViews = result;
-  };
-
-  $scope.gotoCreate = function(viewName, isAllowed) {
-    if(isAllowed){
-      $location.path('/views/'+viewName+'/new');
-    }
-  };
-
-  $scope.deleteInstance = function(instance) {
-      ConfirmationModal.show(
-        $t('common.delete', {
-          term: $t('views.viewInstance')
-        }),
-        $t('common.deleteConfirmation', {
-          instanceType: $t('views.viewInstance'),
-          instanceName: instance.ViewInstanceInfo.label
-        })
-      ).then(function() {
-        View.deleteInstance(instance.ViewInstanceInfo.view_name, instance.ViewInstanceInfo.version, instance.ViewInstanceInfo.instance_name)
-          .then(function() {
-            loadViews();
-          })
-          .catch(function(data) {
-            Alert.error($t('views.alerts.cannotDeleteInstance'), data.data.message);
-          });
-      });
-    };
-
-  $scope.reloadViews = function () {
-    loadViews();
-  };
-
-  /**
-   * Url listing
-   */
-
-  $scope.loadedUrls = [];
-  $scope.urlsPerPage = 10;
+  $scope.views = [];
+  $scope.instances = [];
+  $scope.instancesPerPage = 10;
   $scope.currentPage = 1;
-  $scope.totalUrls = 1;
-  $scope.urlNameFilter = '';
-  $scope.urlSuffixfilter = '';
-  $scope.maxVisiblePages=20;
+  $scope.instanceNameFilter = '';
+  $scope.instanceUrlFilter = '';
+  $scope.maxVisiblePages = 10;
+  $scope.isNotEmptyFilter = true;
+  $scope.instanceTypeFilter = '';
   $scope.tableInfo = {
-    total: 0,
+    filtered: 0,
     showed: 0
   };
 
-  $scope.isNotEmptyFilter = true;
-
-
-  $scope.pageChanged = function() {
-    $scope.listViewUrls();
-  };
+  loadViews();
 
-  $scope.urlsPerPageChanged = function() {
+  $scope.filterInstances = function() {
+    var filteredCount = 0;
+    angular.forEach($scope.instances, function(instance) {
+      if ($scope.instanceNameFilter && instance.short_url_name.indexOf($scope.instanceNameFilter) === -1) {
+        return instance.isFiltered = false;
+      }
+      if ($scope.instanceUrlFilter && ('/main/view/'+ instance.view_name + '/' + instance.short_url).indexOf($scope.instanceUrlFilter) === -1) {
+        return instance.isFiltered = false;
+      }
+      if ($scope.instanceTypeFilter.value !== '*' && instance.view_name.indexOf($scope.instanceTypeFilter.value) === -1) {
+        return instance.isFiltered = false;
+      }
+      filteredCount++;
+      instance.isFiltered = true;
+    });
+    $scope.tableInfo.filtered = filteredCount;
     $scope.resetPagination();
   };
 
+  $scope.pageChanged = function() {
+    showInstancesOnPage();
+  };
 
   $scope.resetPagination = function() {
     $scope.currentPage = 1;
-    $scope.listViewUrls();
+    showInstancesOnPage();
   };
 
-
-  $scope.getVersions = function(instances) {
-    var names = [];
-
-    instances.map(function(view){
-      var name = view.view_name;
-      names.push(name);
-    });
-
-    var output = [],
-        keys = [];
-
-    angular.forEach(names, function(item) {
-      var key = item;
-      if(keys.indexOf(key) === -1) {
-        keys.push(key);
-        output.push(item);
-      }
-    });
-    return output;
-    };
-
-
-
   $scope.clearFilters = function () {
-    $scope.urlNameFilter = '';
-    $scope.urlSuffixfilter = '';
+    $scope.instanceNameFilter = '';
+    $scope.instanceUrlFilter = '';
     $scope.instanceTypeFilter = $scope.typeFilterOptions[0];
     $scope.resetPagination();
   };
 
-
-
   $scope.$watch(
-      function (scope) {
-        return Boolean(scope.urlNameFilter || scope.urlSuffixfilter || (scope.instanceTypeFilter && scope.instanceTypeFilter.value !== '*'));
-      },
-      function (newValue, oldValue, scope) {
-        scope.isNotEmptyFilter = newValue;
-      }
+    function (scope) {
+      return Boolean(scope.instanceNameFilter || scope.instanceUrlFilter || (scope.instanceTypeFilter && scope.instanceTypeFilter.value !== '*'));
+    },
+    function (newValue, oldValue, scope) {
+      scope.isNotEmptyFilter = newValue;
+    }
   );
 
-
-
-
-  $scope.listViewUrls = function(){
-    $scope.isLoadingUrls = true;
-    View.allUrls({
-      currentPage: $scope.currentPage,
-      urlsPerPage: $scope.urlsPerPage,
-      searchString: $scope.urlNameFilter,
-      suffixSearch: $scope.urlSuffixfilter,
-      instanceType: $scope.instanceTypeFilter?$scope.instanceTypeFilter.value:'*'
-    }).then(function(urls) {
-      $scope.isLoadingUrls = false;
-      $scope.urls = urls;
-      $scope.ViewNameFilterOptions = urls.items.map(function(url){
-        return url.ViewUrlInfo.view_instance_common_name;
-      });
-
-      $scope.totalUrls = urls.itemTotal;
-      $scope.tableInfo.showed = urls.items.length;
-      $scope.tableInfo.total = urls.itemTotal;
-
-      // get all view instances to enable/disable creation if empty
-
-    }).catch(function(data) {
-      Alert.error($t('views.alerts.cannotLoadViewUrls'), data.message);
-    });
+  $scope.cloneInstance = function(instanceClone) {
+    $scope.createInstance(instanceClone);
   };
 
-
-  $scope.initViewUrls = function(){
-    $scope.listViewUrls();
-    View.getAllVisibleInstance().then(function(instances){
-      // if no instances then disable the create button
-      if(!instances.length){
-        $scope.createUrlDisabled = true;
-      } else {
-        $scope.typeFilterOptions = [{ label: $t('common.all'), value: '*'}]
-            .concat($scope.getVersions(instances).map(function(key) {
-              return {
-                label: key,
-                value: key
-              };
-            }));
-
-        $scope.instanceTypeFilter = $scope.typeFilterOptions[0];
-      }
-
-    }).catch(function(data) {
-      // Make the create button enabled, and swallow the error
-      $scope.createUrlDisabled = false;
+  $scope.createInstance = function (instanceClone) {
+    var modalInstance = $modal.open({
+      templateUrl: 'views/ambariViews/modals/create.html',
+      controller: 'CreateViewInstanceCtrl',
+      resolve: {
+        views: function() {
+          return $scope.views;
+        },
+        instanceClone: function() {
+          return instanceClone;
+        }
+      },
+      backdrop: 'static'
     });
 
+    modalInstance.result.then(loadViews);
   };
 
-}]);
+  $scope.deleteInstance = function (instance) {
+    ConfirmationModal.show(
+      $t('common.delete', {
+        term: $t('views.viewInstance')
+      }),
+      $t('common.deleteConfirmation', {
+        instanceType: $t('views.viewInstance'),
+        instanceName: instance.label
+      })
+    ).then(function () {
+      View.deleteInstance(instance.view_name, instance.version, instance.instance_name)
+        .then(function () {
+          loadViews();
+        })
+        .catch(function (data) {
+          Alert.error($t('views.alerts.cannotDeleteInstance'), data.data.message);
+        });
+    });
+  };
+}]);

+ 106 - 0
ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/clusters/ClusterInformationCtrl.js

@@ -0,0 +1,106 @@
+/**
+ * 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.
+ */
+'use strict';
+
+angular.module('ambariAdminConsole')
+.controller('ClusterInformationCtrl',
+['$scope', '$http', '$location', 'Cluster', '$routeParams', '$translate', '$rootScope', 'ConfirmationModal', 'Alert',
+function($scope, $http, $location, Cluster, $routeParams, $translate, $rootScope, ConfirmationModal, Alert) {
+  var $t = $translate.instant;
+  $scope.isDataLoaded = false;
+  $scope.edit = {
+    clusterName: null
+  };
+  $scope.isClusterNameEdited = false;
+
+  $scope.$watch(function() {
+    return $rootScope.cluster;
+  }, function() {
+    $scope.cluster = $rootScope.cluster;
+    if ($scope.cluster) {
+      $scope.edit.clusterName = $scope.cluster.Clusters.cluster_name;
+      $scope.getBlueprint();
+    }
+  }, true);
+
+  $scope.getBlueprint = function () {
+    Cluster.getBlueprint({
+      clusterName: $scope.cluster.Clusters.cluster_name
+    }).then(function (data) {
+      console.debug($t('exportBlueprint.dataLoaded'), data);
+      $scope.isDataLoaded = true;
+      var response = JSON.stringify(data, null, 4),
+        lt = /&lt;/g,
+        gt = /&gt;/g,
+        ap = /&#39;/g,
+        ic = /&#34;/g;
+      $scope.blueprint = response ? response.toString().replace(lt, "<").replace(gt, ">").replace(ap, "'").replace(ic, '"') : "";
+    });
+  };
+
+  $scope.downloadBlueprint = function () {
+    if (window.navigator.msSaveOrOpenBlob) {
+      var blob = new Blob([decodeURIComponent(encodeURI($scope.blueprint))], {
+        type: "text/csv;charset=utf-8;"
+      });
+      navigator.msSaveBlob(blob, 'blueprint.json');
+    } else {
+      var a = document.createElement('a');
+      a.href = 'data:attachment/csv;charset=utf-8,' + encodeURI($scope.blueprint);
+      a.target = '_blank';
+      a.download = 'blueprint.json';
+      document.body.appendChild(a);
+      a.click();
+    }
+  };
+
+  $scope.toggleSaveButton = function() {
+    var value = $scope.edit.clusterName;
+    $scope.isClusterNameEdited = (value !== null && $scope.cluster.Clusters.cluster_name !== value);
+  };
+
+  $scope.confirmClusterNameChange = function() {
+    ConfirmationModal.show(
+      $t('common.clusterNameChangeConfirmation.title'),
+      $t('common.clusterNameChangeConfirmation.message', {
+        clusterName: $scope.edit.clusterName
+      })
+    )
+      .then(function () {
+        $scope.saveClusterName();
+      }).catch(function () {
+      // user clicked cancel
+      $scope.edit.clusterName = $scope.cluster.Clusters.cluster_name;
+      $scope.toggleSaveButton();
+    });
+  };
+
+  $scope.saveClusterName = function() {
+    var oldClusterName = $scope.cluster.Clusters.cluster_name,
+        newClusterName = $scope.edit.clusterName;
+
+    Cluster.editName(oldClusterName, newClusterName).then(function(data) {
+      $scope.cluster.Clusters.cluster_name = newClusterName;
+      $scope.edit.clusterName = newClusterName;
+      $scope.toggleSaveButton();
+      Alert.success($t('common.alerts.clusterRenamed', {clusterName: newClusterName}));
+    }).catch(function(data) {
+      Alert.error($t('common.alerts.cannotRenameCluster', {clusterName: newClusterName}), data.data.message);
+    });
+  };
+}]);

+ 0 - 97
ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/clusters/ClustersManageAccessCtrl.js

@@ -1,97 +0,0 @@
-/**
- * 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.
- */
-'use strict';
-
-angular.module('ambariAdminConsole')
-.controller('ClustersManageAccessCtrl', ['$scope', '$location', 'Cluster', '$routeParams', 'Alert', 'PermissionLoader', 'PermissionSaver', '$translate', 'RoleDetailsModal', '$timeout', function($scope, $location, Cluster, $routeParams, Alert, PermissionLoader, PermissionSaver, $translate, RoleDetailsModal, $timeout) {
-  var $t = $translate.instant;
-  $scope.getConstant = function (key) {
-    return $t(key).toLowerCase();
-  };
-  $scope.identity = angular.identity;
-  function reloadClusterData(){
-    PermissionLoader.getClusterPermissions({
-      clusterId: $routeParams.id
-    }).then(function(permissions) {
-      // Refresh data for rendering
-      $scope.permissionsEdit = permissions;
-      $scope.permissions = angular.copy(permissions);
-      //"$scope.isDataLoaded" should be set to true on initial load after "$scope.permissionsEdit" watcher
-      $timeout(function() {
-        $scope.isDataLoaded = true;
-      });
-      var orderedRoles = Cluster.orderedRoles;
-      var pms = [];
-      for (var key=0;key<orderedRoles.length;key++) {
-        pms.push($scope.permissions[orderedRoles[key]]);
-      }
-      $scope.permissions = pms;
-    })
-    .catch(function(data) {
-      Alert.error($t('clusters.alerts.cannotLoadClusterData'), data.data.message);
-    });
-  }
-
-  $scope.isDataLoaded = false;
-  reloadClusterData();
-  $scope.isEditMode = false;
-  $scope.permissions = {};
-  $scope.clusterName = $routeParams.id;
-
-
-  $scope.toggleEditMode = function() {
-    $scope.isEditMode = !$scope.isEditMode;
-  };
-
-  $scope.cancel = function() {
-    $scope.isEditMode = false;
-    $scope.permissionsEdit = angular.copy($scope.permissions); // Reset textedit areaes
-  };
-
-  $scope.save = function() {
-    PermissionSaver.saveClusterPermissions(
-      $scope.permissionsEdit,
-      {
-        clusterId: $routeParams.id
-      }
-    ).then(reloadClusterData)
-    .catch(function(data) {
-      Alert.error($t('common.alerts.cannotSavePermissions'), data.data.message);
-      reloadClusterData();
-    });
-    $scope.isEditMode = false;
-  };
-
-  $scope.$watch(function() {
-    return $scope.permissionsEdit;
-  }, function(newValue) {
-    if (newValue && $scope.isDataLoaded) {
-      $scope.save();
-    }
-  }, true);
-
-  $scope.switchToList = function() {
-    $location.url('/clusters/' + $routeParams.id + '/userAccessList');
-  };
-
-  $scope.showHelpPage = function() {
-    Cluster.getRolesWithAuthorizations().then(function(roles) {
-      RoleDetailsModal.show(roles);
-    });
-  };
-}]);

+ 0 - 58
ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/clusters/ExportBlueprintCtrl.js

@@ -1,58 +0,0 @@
-/**
- * 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.
- */
-'use strict';
-
-angular.module('ambariAdminConsole')
-.controller('ExportBlueprintCtrl', ['$scope', '$http', '$location', 'Cluster', '$routeParams', '$translate', function($scope, $http, $location, Cluster, $routeParams, $translate) {
-  var $t = $translate.instant;
-  $scope.identity = angular.identity;
-
-  $scope.isDataLoaded = false;
-  $scope.clusterName = $routeParams.id;
-
-  $scope.getBlueprint = function() {
-    Cluster.getBlueprint({
-      clusterName: $scope.clusterName
-    }).then(function(data) {
-      console.debug($t('exportBlueprint.dataLoaded'), data);
-      $scope.isDataLoaded = true;
-      var response = JSON.stringify(data, null, 4),
-        lt = /&lt;/g,
-        gt = /&gt;/g,
-        ap = /&#39;/g,
-        ic = /&#34;/g;
-      $scope.blueprint = response ? response.toString().replace(lt, "<").replace(gt, ">").replace(ap, "'").replace(ic, '"') : "";
-    });
-  };
-
-  $scope.downloadBlueprint = function() {
-    if (window.navigator.msSaveOrOpenBlob) {
-      var blob = new Blob([decodeURIComponent(encodeURI($scope.blueprint))], {
-        type: "text/csv;charset=utf-8;"
-      });
-      navigator.msSaveBlob(blob, 'blueprint.json');
-    } else {
-      var a = document.createElement('a');
-      a.href = 'data:attachment/csv;charset=utf-8,' + encodeURI($scope.blueprint);
-      a.target = '_blank';
-      a.download = 'blueprint.json';
-      document.body.appendChild(a);
-      a.click();
-    }
-  };
-}]);

+ 0 - 351
ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/clusters/UserAccessListCtrl.js

@@ -1,351 +0,0 @@
-/**
- * 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.
- */
-'use strict';
-
-angular.module('ambariAdminConsole')
-.controller('UserAccessListCtrl',['$scope', '$location', 'Cluster', '$modal', '$rootScope', '$routeParams', 'PermissionSaver', 'Alert', '$translate', 'RoleDetailsModal',
-function($scope, $location, Cluster, $modal, $rootScope, $routeParams, PermissionSaver, Alert, $translate, RoleDetailsModal) {
-  var $t = $translate.instant;
-  $scope.constants = {
-    users: $t('common.users').toLowerCase(),
-    groups: $t('common.groups').toLowerCase()
-  };
-  $scope.users = [];
-  $scope.usersPerPage = 10;
-  $scope.currentPage = 1;
-  $scope.totalUsers = 1;
-  $scope.currentNameFilter = '';
-  $scope.maxVisiblePages = 20;
-  $scope.roles = [];
-  $scope.clusterId = $routeParams.id;
-  $scope.tableInfo = {
-    total: 0,
-    showed: 0,
-    filtered: 0
-  };
-  $scope.isNotEmptyFilter = true;
-  $scope.NONE_ROLE = {
-    "permission_label" : $t('common.none'),
-    "permission_name" : "CLUSTER.NONE"
-  };
-  $scope.ALL_ROLE = {
-    "permission_label" : $t('common.all'),
-    "permission_name" : ""
-  };
-  $scope.AMBARI_ADMIN_ROLE = {
-    "permission_label" : $t('users.roles.ambariAdmin'),
-    "permission_name" : "AMBARI.ADMINISTRATOR"
-  };
-
-  $scope.pageChanged = function() {
-    $scope.loadUsers();
-  };
-  $scope.usersPerPageChanges = function() {
-    $scope.resetPagination();
-  };
-
-  $scope.loadUsers = function(){
-    Cluster.getPrivilegesWithFilters({
-      nameFilter: $scope.currentNameFilter,
-      typeFilter: $scope.currentTypeFilter,
-      roleFilter: $scope.currentRoleFilter,
-      currentPage: $scope.currentPage,
-      usersPerPage: $scope.usersPerPage
-    }).then(function(data) {
-      $scope.totalUsers = data.itemTotal;
-      $scope.users = data.items.map(function (user) {
-        var privilege = $scope.pickEffectivePrivilege(user.privileges);
-        // Redefine principal_name and principal type in case of None
-        privilege.principal_name = user.Users? user.Users.user_name : user.Groups.group_name;
-        if (privilege.permission_label === $t('users.roles.none')) {
-          privilege.principal_type = user.Users ? 'USER' : 'GROUP';
-        }
-        var name = encodeURIComponent(privilege.principal_name);
-        privilege.encoded_name = name;
-        privilege.original_perm = privilege.permission_name;
-        privilege.url = user.Users? ('users/' + name) : ('groups/' + name + '/edit');
-        privilege.editable = Cluster.ineditableRoles.indexOf(privilege.permission_name) == -1;
-        return privilege;
-      });
-      $scope.tableInfo.total = data.itemTotal;
-      $scope.tableInfo.showed = data.items.length;
-    });
-  };
-
-  $scope.pickEffectivePrivilege = function(privileges) {
-    if (privileges && privileges.length > 1) {
-      return privileges.reduce(function(prev, cur) {
-        var prevIndex = $scope.getRoleRank(prev.PrivilegeInfo.permission_name);
-        var curIndex = $scope.getRoleRank(cur.PrivilegeInfo.permission_name)
-        return (prevIndex < curIndex) ? prev : cur;
-      }).PrivilegeInfo;
-    } else if (privileges && privileges.length == 1 && privileges[0].PrivilegeInfo.permission_name !== "VIEW.USER") {
-      return privileges[0].PrivilegeInfo;
-    } else {
-      return angular.copy($scope.NONE_ROLE);
-    }
-  };
-
-  $scope.loadRoles = function() {
-    Cluster.getPermissions().then(function(data) {
-      $scope.roles = data.map(function(item) {
-        return item.PermissionInfo;
-      });
-      // [All, Administrator, ...roles..., None]
-      $scope.roles.unshift(angular.copy($scope.AMBARI_ADMIN_ROLE));
-      $scope.roles.unshift(angular.copy($scope.ALL_ROLE));
-      $scope.roles.push(angular.copy($scope.NONE_ROLE));
-
-      // create filter select list
-      $scope.roleFilterOptions = angular.copy($scope.roles);
-      $scope.roleFilterOptions.pop();  // filter does not support None
-      $scope.roleFilterOptions = $scope.roleFilterOptions.map(function(o) {
-        return {label: o.permission_label, value: o.permission_name};
-      });
-      $scope.currentRoleFilter = $scope.roleFilterOptions[0];
-
-      // create value select list
-      $scope.roleValueOptions = angular.copy($scope.roles)
-      $scope.roleValueOptions.shift(); // value change does not support all/administrator
-      $scope.roleValueOptions.shift();
-    });
-  };
-
-  $scope.getRoleRank = function(permission_name) {
-    var orderedRoles = Cluster.orderedRoles.concat(['VIEW.USER','CLUSTER.NONE']);
-    var index = orderedRoles.indexOf(permission_name);
-    return index;
-  };
-
-  $scope.save = function(user) {
-    var fromNone = (user.original_perm === $scope.NONE_ROLE.permission_name);
-    if (fromNone) {
-      $scope.addPrivilege(user);
-      return;
-    }
-
-    if ($scope.isUserActive) {
-      Cluster.getPrivilegesForResource({
-          nameFilter : user.user_name,
-          typeFilter : $scope.currentTypeFilter
-      }).then(function(data) {
-        var arrayOfPrivileges = data.items[0].privileges;
-        var privilegesOfTypeUser = [];
-        var privilegesOfTypeGroup = [];
-        for (var i = 0; i < arrayOfPrivileges.length; i++) {
-          if(arrayOfPrivileges[i].PrivilegeInfo.permission_name != "VIEW.USER") {
-            if(arrayOfPrivileges[i].PrivilegeInfo.principal_type === "GROUP"){
-              privilegesOfTypeGroup.push(arrayOfPrivileges[i]);
-            } else {
-              privilegesOfTypeUser.push(arrayOfPrivileges[i].PrivilegeInfo);
-            }
-          }
-        }
-
-        var effectivePrivilege = $scope.pickEffectivePrivilege(arrayOfPrivileges);
-        var effectivePrivilegeFromGroups = $scope.pickEffectivePrivilege(privilegesOfTypeGroup);
-        user.principal_type = 'USER';
-        user.original_perm = effectivePrivilege.permission_name;
-        user.editable = (Cluster.ineditableRoles.indexOf(effectivePrivilege.permission_name) === -1);
-
-        var userIndex = $scope.getRoleRank(user.permission_name);
-        var groupIndex = $scope.getRoleRank(effectivePrivilegeFromGroups.permission_name);
-
-        // Process when it's NONE privilege or higher than current effective group privilege
-        if (userIndex <= groupIndex || user.permission_name == $scope.NONE_ROLE.permission_name) {
-          var privilege_ids = privilegesOfTypeUser.filter(function(privilegeOfTypeUser) {
-            return privilegeOfTypeUser.principal_type !== 'ROLE';
-          }).map(function (privilegeOfTypeUser) {
-            return privilegeOfTypeUser.privilege_id;
-          });
-
-          // Purge existing user level privileges if there is any
-          if(privilege_ids.length !== 0) {
-            Cluster.deleteMultiplePrivileges(
-                $routeParams.id,
-                privilege_ids
-            )
-            .then(function() {
-              $scope.addPrivilege(user);
-            });
-          } else {
-            $scope.addPrivilege(user);
-          }
-        } else {
-          Alert.error($t('common.alerts.cannotSavePermissions'),
-              $t('users.alerts.usersEffectivePrivilege', {user_name : user.user_name})
-          );
-          $scope.loadUsers();
-        }
-      });
-    } else {
-      Cluster.getPrivilegesForResource({
-          nameFilter : user.group_name,
-          typeFilter : $scope.currentTypeFilter
-      }).then(function(data) {
-        var arrayOfPrivileges = data.items[0].privileges;
-        var privilegesOfTypeGroup = [];
-        var privilege = $scope.pickEffectivePrivilege(arrayOfPrivileges);
-        user.principal_type = 'GROUP';
-        user.original_perm = privilege.permission_name;
-        user.editable = (Cluster.ineditableRoles.indexOf(privilege.permission_name) === -1);
-
-        arrayOfPrivileges.forEach(function(privilegeOfTypeGroup) {
-          if(privilegeOfTypeGroup.PrivilegeInfo.permission_name != "VIEW.USER") {
-            if (privilegeOfTypeGroup.PrivilegeInfo.principal_type === "GROUP") {
-              privilegesOfTypeGroup.push(privilegeOfTypeGroup.PrivilegeInfo);
-            }
-          }
-        });
-
-        var privilege_ids = [];
-        privilegesOfTypeGroup.forEach(function(privilegeOfTypeGroup) {
-          privilege_ids.push(privilegeOfTypeGroup.privilege_id);
-        });
-
-        //delete all privileges of type GROUP, if they exist
-        //then add the privilege for the group, after which the group displays the effective privilege
-        if(privilege_ids.length !== 0) {
-          Cluster.deleteMultiplePrivileges(
-              $routeParams.id,
-              privilege_ids
-          )
-          .then(function() {
-            $scope.addPrivilege(user);
-          });
-        } else {
-          $scope.addPrivilege(user);
-        }
-      });
-    }
-  };
-
-  $scope.cancel = function(user) {
-    user.permission_name = user.original_perm;
-  };
-
-  $scope.addPrivilege = function(user) {
-    var changeToNone = user.permission_name == $scope.NONE_ROLE.permission_name;
-    if (changeToNone) {
-      if ($scope.isUserActive) {
-        Alert.success($t('users.alerts.roleChangedToNone', {
-            user_name : user.user_name
-        }));
-      } else {
-        $scope.showSuccess(user);
-      }
-      $scope.loadUsers();
-      return;
-    }
-    Cluster.createPrivileges(
-      {
-        clusterId: $routeParams.id
-      },
-      [{PrivilegeInfo: {
-        permission_name: user.permission_name,
-        principal_name: user.principal_name,
-        principal_type: user.principal_type
-      }}]
-    ).then(function() {
-        $scope.showSuccess(user);
-        $scope.loadUsers();
-      })
-      .catch(function(data) {
-        Alert.error($t('common.alerts.cannotSavePermissions'), data.data.message);
-        $scope.loadUsers();
-      });
-  };
-
-  $scope.showSuccess = function(user) {
-    Alert.success($t('users.alerts.roleChanged', {
-      name: user.principal_name,
-      role: $scope.roles.filter(function(r){
-          return r.permission_name == user.permission_name}
-      )[0].permission_label
-    }));
-  };
-
-  $scope.resetPagination = function() {
-    $scope.currentPage = 1;
-    $scope.loadUsers();
-  };
-  $scope.currentRoleFilter = { label:$t('common.all'), value: '' };
-
-
-  $scope.typeFilterOptions = [
-    {label: $t('common.user'), value: 'USER'},
-    {label: $t('common.group'), value: 'GROUP'}
-  ];
-
-  $scope.isUserActive = true;
-
-  $scope.currentTypeFilter = $scope.typeFilterOptions[0];
-
-  $scope.switchToUser = function() {
-    if (!$scope.isUserActive) {
-      $scope.currentTypeFilter = $scope.typeFilterOptions[0];
-      $scope.isUserActive = true;
-      $scope.resetPagination();
-    }
-  };
-
-  $scope.switchToGroup = function() {
-    if ($scope.isUserActive) {
-      $scope.currentTypeFilter = $scope.typeFilterOptions[1];
-      $scope.isUserActive = false;
-      $scope.resetPagination();
-    }
-  };
-
-  $scope.clearFilters = function() {
-    $scope.currentNameFilter = '';
-    $scope.currentRoleFilter = $scope.roleFilterOptions[0];
-    $scope.resetPagination();
-  };
-
-  $scope.loadRoles();
-  $scope.loadUsers();
-
-  $scope.$watch(
-    function (scope) {
-      return Boolean(scope.currentNameFilter || (scope.currentRoleFilter && scope.currentRoleFilter.value));
-    },
-    function (newValue, oldValue, scope) {
-      scope.isNotEmptyFilter = newValue;
-    }
-  );
-
-  $rootScope.$watch(function(scope) {
-    return scope.LDAPSynced;
-  }, function(LDAPSynced) {
-    if(LDAPSynced === true){
-      $rootScope.LDAPSynced = false;
-      $scope.loadUsers();
-    }
-  });
-
-  $scope.switchToBlock = function() {
-    $location.url('/clusters/' + $routeParams.id + '/manageAccess');
-  };
-
-  $scope.showHelpPage = function() {
-    Cluster.getRolesWithAuthorizations().then(function(roles) {
-      RoleDetailsModal.show(roles);
-    });
-  };
-}]);

+ 0 - 65
ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/groups/GroupsCreateCtrl.js

@@ -1,65 +0,0 @@
-/**
- * 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.
- */
-'use strict';
-
-angular.module('ambariAdminConsole')
-.controller('GroupsCreateCtrl',['$scope', 'Group', '$location', 'Alert', 'UnsavedDialog', '$translate', function($scope, Group, $location, Alert, UnsavedDialog, $translate) {
-  var $t = $translate.instant;
-  $scope.group = new Group();
-  var targetUrl = '/groups';
-
-  $scope.createGroup = function() {
-    $scope.form.submitted = true;
-    if ($scope.form.$valid){
-      $scope.group.save().then(function() {
-        Alert.success($t('groups.alerts.groupCreated', {groupName: $scope.group.group_name}));
-        $scope.form.$setPristine();
-        $location.path(targetUrl);
-      })
-      .catch(function(data) {
-        Alert.error($t('groups.alerts.groupCreationError'), data.data.message);
-      });
-    }
-  };
-
-  $scope.cancel = function() {
-    $scope.form.$setPristine();
-    $location.path('/groups');
-  };
-
-  $scope.$on('$locationChangeStart', function(event, __targetUrl) {
-    if( $scope.form.$dirty ){
-      UnsavedDialog().then(function(action) {
-        targetUrl = __targetUrl.split('#').pop();
-        switch(action){
-          case 'save':
-            $scope.createGroup();
-            break;
-          case 'discard':
-            $scope.form.$setPristine();
-            $location.path(targetUrl);
-            break;
-          case 'cancel':
-            targetUrl = '/groups';
-            break;
-        }
-      });
-      event.preventDefault();
-    }
-  });
-}]);

+ 0 - 106
ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/groups/GroupsListCtrl.js

@@ -1,106 +0,0 @@
-/**
- * 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.
- */
-'use strict';
-
-angular.module('ambariAdminConsole')
-.controller('GroupsListCtrl',['$scope', 'Group', '$modal', 'ConfirmationModal', '$rootScope', 'GroupConstants', '$translate', function($scope, Group, $modal, ConfirmationModal, $rootScope, GroupConstants, $translate) {
-  var $t = $translate.instant;
-  $scope.constants = {
-    groups: $t('common.groups').toLowerCase()
-  };
-  $scope.isLoading = false;
-  $scope.groups = [];
-
-  $scope.groupsPerPage = 10;
-  $scope.currentPage = 1;
-  $scope.totalGroups = 1;
-  $scope.currentNameFilter = '';
-  $scope.maxVisiblePages=20;
-  $scope.tableInfo = {
-    total: 0,
-    showed: 0
-  };
-  $scope.isNotEmptyFilter = true;
-
-  $scope.pageChanged = function() {
-    loadGroups();
-  };
-  $scope.groupsPerPageChanges = function() {
-    loadGroups();
-  };
-
-  $scope.resetPagination = function() {
-    $scope.currentPage = 1;
-    loadGroups();
-  };
-
-  function loadGroups(){
-    $scope.isLoading = true;
-    Group.all({
-      currentPage: $scope.currentPage, 
-      groupsPerPage: $scope.groupsPerPage, 
-      searchString: $scope.currentNameFilter,
-      group_type: $scope.currentTypeFilter.value
-    }).then(function(groups) {
-      $scope.isLoading = false;
-      $scope.totalGroups = groups.itemTotal;
-      $scope.groups = groups.map(Group.makeGroup);
-      $scope.tableInfo.total = groups.itemTotal;
-      $scope.tableInfo.showed = groups.length;
-    })
-    .catch(function(data) {
-      console.error($t('groups.alerts.getGroupsListError'));
-    });
-  }
-
-  $scope.typeFilterOptions = [{ label: $t('common.all'), value: '*'}]
-    .concat(Object.keys(GroupConstants.TYPES).map(function(key) {
-      return {
-        label: $t(GroupConstants.TYPES[key].LABEL_KEY),
-        value: GroupConstants.TYPES[key].VALUE
-      };
-  }));
-  $scope.currentTypeFilter = $scope.typeFilterOptions[0];
-
-  $scope.clearFilters = function () {
-    $scope.currentNameFilter = '';
-    $scope.currentTypeFilter = $scope.typeFilterOptions[0];
-    $scope.resetPagination();
-  };
-  
-  loadGroups();
-
-  $scope.$watch(
-    function (scope) {
-      return Boolean(scope.currentNameFilter || (scope.currentTypeFilter && scope.currentTypeFilter.value !== '*'));
-    },
-    function (newValue, oldValue, scope) {
-      scope.isNotEmptyFilter = newValue;
-    }
-  );
-
-  $rootScope.$watch(function(scope) {
-    return scope.LDAPSynced;
-  }, function(LDAPSynced) {
-    if(LDAPSynced === true){
-      $rootScope.LDAPSynced = false;
-      loadGroups();
-    }
-  });
-
-}]);

+ 27 - 1
ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/stackVersions/StackVersionsCreateCtrl.js

@@ -40,6 +40,16 @@ angular.module('ambariAdminConsole')
     display_name: ''
   };
 
+  $scope.isGPLAccepted = false;
+
+  $scope.isGPLRepo = function (repository) {
+    return repository.Repositories.tags.indexOf('GPL') >= 0;
+  };
+
+  $scope.showRepo = function (repository) {
+    return $scope.isGPLAccepted || !$scope.isGPLRepo(repository);
+  };
+
   $scope.publicOption = {
     index: 1,
     hasError: false
@@ -175,6 +185,15 @@ angular.module('ambariAdminConsole')
     });
   };
 
+  /**
+   * Load GPL License Accepted value
+   */
+  $scope.fetchGPLLicenseAccepted = function () {
+    Stack.getGPLLicenseAccepted().then(function (data) {
+      $scope.isGPLAccepted = data === 'true';
+    })
+  };
+
   /**
    * Load supported OS list
    */
@@ -350,7 +369,11 @@ angular.module('ambariAdminConsole')
 
   $scope.updateRepoVersions = function () {
     var skip = $scope.skipValidation || $scope.useRedhatSatellite;
-    return Stack.validateBaseUrls(skip, $scope.osList, $scope.upgradeStack).then(function (invalidUrls) {
+    // Filter out repositories that are not shown in the UI
+    var osList = Object.assign([], $scope.osList).map(function(os) {
+      return Object.assign({}, os, {repositories: os.repositories.filter(function(repo) { return $scope.showRepo(repo); })});
+    });
+    return Stack.validateBaseUrls(skip, osList, $scope.upgradeStack).then(function (invalidUrls) {
       if (invalidUrls.length === 0) {
         Stack.updateRepo($scope.upgradeStack.stack_name, $scope.upgradeStack.stack_version, $scope.id, $scope.updateObj).then(function () {
           Alert.success($t('versions.alerts.versionEdited', {
@@ -477,6 +500,9 @@ angular.module('ambariAdminConsole')
 
     // load supported os type base on stack version
     $scope.afterStackVersionRead();
+
+    // Load GPL license accepted value
+    $scope.fetchGPLLicenseAccepted();
   };
 
   $scope.selectRepoInList = function() {

+ 26 - 1
ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/stackVersions/StackVersionsEditCtrl.js

@@ -33,6 +33,15 @@ angular.module('ambariAdminConsole')
     display_name: ''
   };
   $scope.defaulfOSRepos = {}; // a copy of initial loaded repo info for "changed" check later
+  $scope.isGPLAccepted = false;
+
+  $scope.isGPLRepo = function (repository) {
+    return repository.Repositories.tags && repository.Repositories.tags.indexOf('GPL') >= 0;
+  };
+
+  $scope.showRepo = function (repository) {
+    return $scope.isGPLAccepted || !$scope.isGPLRepo(repository);
+  };
 
   $scope.loadStackVersionInfo = function () {
     return Stack.getRepo($routeParams.versionId, $routeParams.stackName).then(function (response) {
@@ -67,6 +76,9 @@ angular.module('ambariAdminConsole')
       // load supported os type base on stack version
       $scope.afterStackVersionRead();
 
+      // Load GPL license accepted value
+      $scope.fetchGPLLicenseAccepted();
+
       // if user reach here from UI click, repo status should be cached
       // otherwise re-fetch repo status from cluster end point.
       $scope.repoStatus = Cluster.repoStatusCache[$scope.id];
@@ -84,6 +96,15 @@ angular.module('ambariAdminConsole')
     });
   };
 
+  /**
+   * Load GPL License Accepted value
+   */
+  $scope.fetchGPLLicenseAccepted = function () {
+    Stack.getGPLLicenseAccepted().then(function (data) {
+      $scope.isGPLAccepted = data === 'true';
+    })
+  };
+
   /**
    * Load supported OS list
    */
@@ -170,7 +191,11 @@ angular.module('ambariAdminConsole')
 
   $scope.updateRepoVersions = function () {
     var skip = $scope.skipValidation || $scope.useRedhatSatellite;
-    return Stack.validateBaseUrls(skip, $scope.osList, $scope.upgradeStack).then(function (invalidUrls) {
+    // Filter out repositories that are not shown in the UI
+    var osList = Object.assign([], $scope.osList).map(function(os) {
+      return Object.assign({}, os, {repositories: os.repositories.filter(function(repo) { return $scope.showRepo(repo); })});
+    });
+    return Stack.validateBaseUrls(skip, osList, $scope.upgradeStack).then(function (invalidUrls) {
       if (invalidUrls.length === 0) {
         Stack.updateRepo($scope.upgradeStack.stack_name, $scope.upgradeStack.stack_version, $scope.id, $scope.updateObj).then(function () {
           Alert.success($t('versions.alerts.versionEdited', {

+ 120 - 0
ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/userManagement/GroupCreateCtrl.js

@@ -0,0 +1,120 @@
+/**
+ * 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.
+ */
+'use strict';
+
+angular.module('ambariAdminConsole')
+.controller('GroupCreateCtrl',
+['$scope', '$rootScope', 'Group', '$location', 'Alert', 'UnsavedDialog', '$translate', '$modalInstance', 'Cluster', 'RoleDetailsModal',
+function($scope, $rootScope, Group, $location, Alert, UnsavedDialog, $translate, $modalInstance, Cluster, RoleDetailsModal) {
+  var $t = $translate.instant;
+
+  $scope.form = {};
+  $scope.formData = {
+    groupName: '',
+    members: [],
+    role: ''
+  };
+  $scope.roleOptions = [];
+
+
+  function loadRoles() {
+    return Cluster.getRoleOptions().then(function (data) {
+      $scope.roleOptions = data;
+    });
+  }
+
+  function unsavedChangesCheck() {
+    if ($scope.form.groupCreateForm.$dirty) {
+      UnsavedDialog().then(function (action) {
+        switch (action) {
+          case 'save':
+            $scope.save();
+            break;
+          case 'discard':
+            $modalInstance.close('discard');
+            break;
+          case 'cancel':
+            break;
+        }
+      });
+    } else {
+      $modalInstance.close('discard');
+    }
+  }
+
+  function saveMembers(group, members) {
+    if (!members.length) {
+      return;
+    }
+    group.members = members.filter(function(item) {
+      return item.trim();
+    }).map(function(item) {
+      return item.trim();
+    });
+    group.saveMembers().catch(function(data) {
+      Alert.error($t('groups.alerts.cannotUpdateGroupMembers'), "<div class='break-word'>" + data.message + "</div>");
+    });
+  }
+
+  $scope.showHelpPage = function() {
+    Cluster.getRolesWithAuthorizations().then(function(roles) {
+      RoleDetailsModal.show(roles);
+    });
+  };
+
+  $scope.save = function () {
+    $scope.form.groupCreateForm.submitted = true;
+    if ($scope.form.groupCreateForm.$valid) {
+      var group = new Group($scope.formData.groupName);
+      group.save().then(function () {
+        saveMembers(group, $scope.formData.members);
+        saveRole();
+        $modalInstance.dismiss('created');
+        Alert.success($t('groups.alerts.groupCreated', {groupName: $scope.formData.groupName}));
+      })
+      .catch(function (data) {
+        Alert.error($t('groups.alerts.groupCreationError'), data.data.message);
+      });
+    }
+  };
+
+  function saveRole() {
+    if (!$scope.formData.role || $scope.formData.role === 'NONE') {
+      return;
+    }
+    Cluster.createPrivileges(
+      {
+        clusterId: $rootScope.cluster.Clusters.cluster_name
+      },
+      [{PrivilegeInfo: {
+        permission_name: $scope.formData.role,
+        principal_name: $scope.formData.groupName,
+        principal_type: 'GROUP'
+      }}]
+    )
+    .catch(function(data) {
+      Alert.error($t('common.alerts.cannotSavePermissions'), data.data.message);
+    });
+  }
+
+  $scope.cancel = function () {
+    unsavedChangesCheck();
+  };
+
+  loadRoles();
+}]);

+ 115 - 47
ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/groups/GroupsEditCtrl.js → ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/userManagement/GroupEditCtrl.js

@@ -18,8 +18,15 @@
 'use strict';
 
 angular.module('ambariAdminConsole')
-.controller('GroupsEditCtrl',['$scope', 'Group', '$routeParams', 'Cluster', 'View', 'Alert', 'ConfirmationModal', '$location', 'GroupConstants', '$translate', function($scope, Group, $routeParams, Cluster, View, Alert, ConfirmationModal, $location, GroupConstants, $translate) {
+.controller('GroupEditCtrl',
+['$scope', '$rootScope', 'Group', '$routeParams', 'Cluster', 'View', 'Alert', 'ConfirmationModal', '$location', '$translate', 'RoleDetailsModal',
+function($scope, $rootScope, Group, $routeParams, Cluster, View, Alert, ConfirmationModal, $location,  $translate, RoleDetailsModal) {
   var $t = $translate.instant;
+  var nonRole = {
+    permission_name: 'NONE',
+    permission_label: $t('users.roles.none')
+  };
+
   $scope.constants = {
     group: $t('common.group'),
     view: $t('common.view').toLowerCase(),
@@ -30,7 +37,6 @@ angular.module('ambariAdminConsole')
   $scope.group.editingUsers = [];
   $scope.groupMembers = [];
   $scope.dataLoaded = false;
-  
   $scope.isMembersEditing = false;
 
   $scope.$watch(function() {
@@ -60,30 +66,11 @@ angular.module('ambariAdminConsole')
     $scope.group.saveMembers().catch(function(data) {
         Alert.error($t('groups.alerts.cannotUpdateGroupMembers'), "<div class='break-word'>" + data.message + "</div>");
       }).finally(function() {
-        loadMembers();
+        loadGroup();
       });
     $scope.isMembersEditing = false;
   };
 
-
-  function loadMembers(){
-    $scope.group.getMembers().then(function(members) {
-      $scope.group.groupTypeName = $t(GroupConstants.TYPES[$scope.group.group_type].LABEL_KEY);
-      $scope.groupMembers = members;
-      $scope.group.editingUsers = angular.copy($scope.groupMembers);
-    });
-  }    
-  
-  $scope.group.isLDAP().then(function(isLDAP) {
-    $scope.group.ldap_group = isLDAP;
-    $scope.group.getGroupType().then(function() {
-      $scope.group.groupTypeName = $t(GroupConstants.TYPES[$scope.group.group_type].LABEL_KEY);
-    });
-    loadMembers();
-  });
-
-  $scope.group.getGroupType();
-
   $scope.deleteGroup = function(group) {
     ConfirmationModal.show(
       $t('common.delete', {
@@ -117,12 +104,9 @@ angular.module('ambariAdminConsole')
           });
         }
         group.destroy().then(function() {
-          $location.path('/groups');
+          $location.path('/userManagement?tab=groups');
           if (clusterPrivilegesIds.length) {
-            Cluster.getAllClusters().then(function (clusters) {
-              var clusterName = clusters[0].Clusters.cluster_name;
-              Cluster.deleteMultiplePrivileges(clusterName, clusterPrivilegesIds);
-            });
+            Cluster.deleteMultiplePrivileges($rootScope.cluster.Clusters.cluster_name, clusterPrivilegesIds);
           }
           angular.forEach(viewsPrivileges, function(privilege) {
             View.deletePrivilege(privilege);
@@ -133,7 +117,7 @@ angular.module('ambariAdminConsole')
   };
 
 
-  $scope.removePrivilege = function(name, privilege) {
+  $scope.removeViewPrivilege = function(name, privilege) {
     var privilegeObject = {
         id: privilege.privilege_id,
         view_name: privilege.view_name,
@@ -141,40 +125,124 @@ angular.module('ambariAdminConsole')
         instance_name: name
     };
     View.deletePrivilege(privilegeObject).then(function() {
-      loadPrivileges();
+      loadGroup();
     });
   };
 
-function loadPrivileges() {
-  // Load privileges
-  Group.getPrivileges($routeParams.id).then(function(data) {
+  $scope.showHelpPage = function() {
+    Cluster.getRolesWithAuthorizations().then(function(roles) {
+      RoleDetailsModal.show(roles);
+    });
+  };
+
+  $scope.updateRole = function () {
+    var clusterName = $rootScope.cluster.Clusters.cluster_name;
+    if ($scope.originalRole.permission_name !== $scope.currentRole.permission_name) {
+      if ($scope.currentRole.permission_name === 'NONE') {
+        deleteGroupRoles(clusterName, $scope.group).finally(loadGroup);
+      } else {
+        if ($scope.group.roles.length) {
+          deleteGroupRoles(clusterName, $scope.group, true).finally(function() {
+            addGroupRoles(clusterName, $scope.currentRole, $scope.group).finally(loadGroup);
+          });
+        } else {
+          addGroupRoles(clusterName, $scope.currentRole, $scope.group).finally(loadGroup);
+        }
+      }
+    }
+  };
+
+  function deleteGroupRoles(clusterName, group, ignoreAlert) {
+    return Cluster.deleteMultiplePrivileges(
+      clusterName,
+      group.roles.map(function(item) {
+        return item.privilege_id;
+      })
+    ).then(function () {
+      if (!ignoreAlert) {
+        Alert.success($t('users.alerts.roleChangedToNone', {
+          user_name: group.group_name
+        }));
+      }
+    }).catch(function (data) {
+      Alert.error($t('common.alerts.cannotSavePermissions'), data.data.message);
+    });
+  }
+
+  function addGroupRoles(clusterName, newRole, group) {
+    return Cluster.createPrivileges(
+      {
+        clusterId: clusterName
+      },
+      [{
+        PrivilegeInfo: {
+          permission_name: newRole.permission_name,
+          principal_name: group.group_name,
+          principal_type: 'GROUP'
+        }
+      }]
+    ).then(function () {
+      Alert.success($t('users.alerts.roleChanged', {
+        name: group.group_name,
+        role: newRole.permission_label
+      }));
+    }).catch(function (data) {
+      Alert.error($t('common.alerts.cannotSavePermissions'), data.data.message);
+    });
+  }
+
+  function parsePrivileges(rawPrivileges) {
     var privileges = {
       clusters: {},
       views: {}
     };
-    angular.forEach(data.data.items, function(privilege) {
+    angular.forEach(rawPrivileges, function (privilege) {
       privilege = privilege.PrivilegeInfo;
-      if(privilege.type === 'CLUSTER'){
+      if (privilege.type === 'CLUSTER') {
         // This is cluster
         privileges.clusters[privilege.cluster_name] = privileges.clusters[privilege.cluster_name] || [];
         privileges.clusters[privilege.cluster_name].push(privilege.permission_label);
-      } else if ( privilege.type === 'VIEW'){
-        privileges.views[privilege.instance_name] = privileges.views[privilege.instance_name] || { privileges:[]};
-        privileges.views[privilege.instance_name].version = privilege.version;
-        privileges.views[privilege.instance_name].view_name = privilege.view_name;
-        privileges.views[privilege.instance_name].privilege_id = privilege.privilege_id;
-        privileges.views[privilege.instance_name].privileges.push(privilege.permission_label);
+      } else if (privilege.type === 'VIEW') {
+        privileges.views[privilege.instance_name] = privileges.views[privilege.instance_name] || {
+          privileges: [],
+          version: privilege.version,
+          view_name: privilege.view_name,
+          privilege_id: privilege.privilege_id
+        };
+        if (privileges.views[privilege.instance_name].privileges.indexOf(privilege.permission_label) === -1) {
+          privileges.views[privilege.instance_name].privileges.push(privilege.permission_label);
+        }
       }
     });
 
-    $scope.privileges = data.data.items.length ? privileges : null;
+    $scope.privileges = privileges;
     $scope.noClusterPriv = $.isEmptyObject(privileges.clusters);
     $scope.noViewPriv = $.isEmptyObject(privileges.views);
     $scope.hidePrivileges = $scope.noClusterPriv && $scope.noViewPriv;
-    $scope.dataLoaded = true;
-  }).catch(function(data) {
-    Alert.error($t('common.alerts.cannotLoadPrivileges'), data.data.message);
-  });
-}
-loadPrivileges();
+  }
+
+  function loadGroup() {
+    Group.get($routeParams.id).then(function(group) {
+      $scope.group = group;
+      parsePrivileges(group.privileges);
+      var clusterRole = $scope.group.roles[0];
+      $scope.currentRole = clusterRole || nonRole;
+      $scope.originalRole = clusterRole || nonRole;
+      $scope.groupMembers = group.members.map(function(item) {
+        return item.MemberInfo.user_name;
+      });
+      $scope.group.editingUsers = angular.copy($scope.groupMembers);
+    }).finally(function() {
+      $scope.dataLoaded = true;
+    });
+  }
+
+  function loadRoles() {
+    return Cluster.getRoleOptions().then(function(data) {
+      $scope.roleOptions = data;
+    });
+  }
+
+  loadRoles().finally(loadGroup);
+
 }]);

+ 167 - 0
ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/userManagement/GroupsListCtrl.js

@@ -0,0 +1,167 @@
+/**
+ * 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.
+ */
+'use strict';
+
+angular.module('ambariAdminConsole')
+.controller('GroupsListCtrl',
+['$scope', 'Group', '$modal', 'ConfirmationModal', '$rootScope', '$translate', 'Settings', 'Cluster', 'View', 'Alert',
+function($scope, Group, $modal, ConfirmationModal, $rootScope, $translate, Settings, Cluster, View, Alert) {
+  var $t = $translate.instant;
+  $scope.constants = {
+    groups: $t('common.groups').toLowerCase()
+  };
+  $scope.minRowsToShowPagination = Settings.minRowsToShowPagination;
+  $scope.isLoading = false;
+  $scope.groups = [];
+
+  $scope.groupsPerPage = 10;
+  $scope.currentPage = 1;
+  $scope.totalGroups = 0;
+  $scope.filter = {
+    name: '',
+    type: null
+  };
+  $scope.maxVisiblePages=20;
+  $scope.tableInfo = {
+    total: 0,
+    showed: 0
+  };
+  $scope.isNotEmptyFilter = true;
+
+  $scope.pageChanged = function() {
+    loadGroups();
+  };
+  $scope.groupsPerPageChanges = function() {
+    loadGroups();
+  };
+
+  $scope.resetPagination = function() {
+    $scope.currentPage = 1;
+    loadGroups();
+  };
+
+  function loadGroups(){
+    $scope.isLoading = true;
+    Group.all({
+      currentPage: $scope.currentPage, 
+      groupsPerPage: $scope.groupsPerPage, 
+      searchString: $scope.filter.name,
+      group_type: $scope.filter.type.value
+    }).then(function(groups) {
+      $scope.isLoading = false;
+      $scope.totalGroups = groups.itemTotal;
+      $scope.groups = groups.map(Group.makeGroup);
+      $scope.tableInfo.total = groups.itemTotal;
+      $scope.tableInfo.showed = groups.length;
+    })
+    .catch(function(data) {
+      Alert.error($t('groups.alerts.getGroupsListError'), data.data.message);
+    });
+  }
+
+  $scope.typeFilterOptions = [{ label: $t('common.all'), value: '*'}]
+    .concat(Object.keys(Group.getTypes()).map(function(key) {
+      return {
+        label: $t(Group.getTypes()[key].LABEL_KEY),
+        value: Group.getTypes()[key].VALUE
+      };
+  }));
+  $scope.filter.type = $scope.typeFilterOptions[0];
+
+  $scope.clearFilters = function () {
+    $scope.filter.name = '';
+    $scope.filter.type = $scope.typeFilterOptions[0];
+    $scope.resetPagination();
+  };
+  
+  loadGroups();
+
+  $scope.$watch(
+    function (scope) {
+      return Boolean(scope.filter.name || (scope.filter.type && scope.filter.type.value !== '*'));
+    },
+    function (newValue, oldValue, scope) {
+      scope.isNotEmptyFilter = newValue;
+    }
+  );
+
+  $rootScope.$watch(function(scope) {
+    return scope.LDAPSynced;
+  }, function(LDAPSynced) {
+    if(LDAPSynced === true){
+      $rootScope.LDAPSynced = false;
+      loadGroups();
+    }
+  });
+
+  $scope.createGroup = function () {
+    var modalInstance = $modal.open({
+      templateUrl: 'views/userManagement/modals/groupCreate.html',
+      controller: 'GroupCreateCtrl',
+      backdrop: 'static'
+    });
+
+    modalInstance.result.catch(loadGroups);
+  };
+
+  $scope.deleteGroup = function(group) {
+    ConfirmationModal.show(
+      $t('common.delete', {
+        term: $t('common.group')
+      }),
+      $t('common.deleteConfirmation', {
+        instanceType: $t('common.group').toLowerCase(),
+        instanceName: '"' + group.group_name + '"'
+      })
+    ).then(function() {
+      Cluster.getPrivilegesForResource({
+        nameFilter : group.group_name,
+        typeFilter : {value: 'GROUP'}
+      }).then(function(data) {
+        var clusterPrivilegesIds = [];
+        var viewsPrivileges = [];
+        if (data.items && data.items.length) {
+          angular.forEach(data.items[0].privileges, function(privilege) {
+            if (privilege.PrivilegeInfo.principal_type === 'GROUP') {
+              if (privilege.PrivilegeInfo.type === 'VIEW') {
+                viewsPrivileges.push({
+                  id: privilege.PrivilegeInfo.privilege_id,
+                  view_name: privilege.PrivilegeInfo.view_name,
+                  version: privilege.PrivilegeInfo.version,
+                  instance_name: privilege.PrivilegeInfo.instance_name
+                });
+              } else {
+                clusterPrivilegesIds.push(privilege.PrivilegeInfo.privilege_id);
+              }
+            }
+          });
+        }
+        group.destroy().then(function() {
+          if (clusterPrivilegesIds.length) {
+            Cluster.deleteMultiplePrivileges($rootScope.cluster.Clusters.cluster_name, clusterPrivilegesIds);
+          }
+          angular.forEach(viewsPrivileges, function(privilege) {
+            View.deletePrivilege(privilege);
+          });
+          loadGroups();
+        });
+      });
+    });
+  };
+
+}]);

+ 113 - 0
ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/userManagement/UserCreateCtrl.js

@@ -0,0 +1,113 @@
+/**
+ * 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.
+ */
+'use strict';
+
+angular.module('ambariAdminConsole')
+.controller('UserCreateCtrl',
+['$scope', '$rootScope', 'User', '$location', 'Alert', 'UnsavedDialog', '$translate', 'Cluster', '$modalInstance', 'RoleDetailsModal',
+function($scope, $rootScope, User, $location, Alert, UnsavedDialog, $translate, Cluster, $modalInstance, RoleDetailsModal) {
+  var $t = $translate.instant;
+
+  $scope.form = {};
+  $scope.formData = {
+    userName: '',
+    password: '',
+    confirmPassword: '',
+    role: '',
+    isAdmin: false,
+    isActive: true
+  };
+  $scope.roleOptions = [];
+
+  function loadRoles() {
+    return Cluster.getRoleOptions().then(function (data) {
+      $scope.roleOptions = data;
+    });
+  }
+
+  function unsavedChangesCheck() {
+    if ($scope.form.userCreateForm.$dirty) {
+      UnsavedDialog().then(function (action) {
+        switch (action) {
+          case 'save':
+            $scope.save();
+            break;
+          case 'discard':
+            $modalInstance.close('discard');
+            break;
+          case 'cancel':
+            break;
+        }
+      });
+    } else {
+      $modalInstance.close('discard');
+    }
+  }
+
+  $scope.showHelpPage = function() {
+    Cluster.getRolesWithAuthorizations().then(function(roles) {
+      RoleDetailsModal.show(roles);
+    });
+  };
+
+  $scope.save = function () {
+    $scope.form.userCreateForm.submitted = true;
+    if ($scope.form.userCreateForm.$valid) {
+      User.create({
+        'Users/user_name': $scope.formData.userName,
+        'Users/password': $scope.formData.password,
+        'Users/active': Boolean($scope.formData.isActive),
+        'Users/admin': Boolean($scope.formData.isAdmin)
+      }).then(function () {
+        saveRole();
+        $modalInstance.dismiss('created');
+        Alert.success($t('users.alerts.userCreated', {
+          userName: $scope.formData.userName,
+          encUserName: encodeURIComponent($scope.formData.userName)
+        }));
+      }).catch(function (data) {
+        Alert.error($t('users.alerts.userCreationError'), data.data.message);
+      });
+    }
+  };
+
+  function saveRole() {
+    if (!$scope.formData.role || $scope.formData.role === 'NONE') {
+      return;
+    }
+    Cluster.createPrivileges(
+      {
+        clusterId: $rootScope.cluster.Clusters.cluster_name
+      },
+      [{PrivilegeInfo: {
+        permission_name: $scope.formData.role,
+        principal_name: $scope.formData.userName,
+        principal_type: 'USER'
+      }}]
+    )
+    .catch(function(data) {
+      Alert.error($t('common.alerts.cannotSavePermissions'), data.data.message);
+    });
+  }
+
+  $scope.cancel = function () {
+    unsavedChangesCheck();
+  };
+
+  loadRoles();
+}]);

+ 364 - 0
ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/userManagement/UserEditCtrl.js

@@ -0,0 +1,364 @@
+/**
+ * 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.
+ */
+'use strict';
+
+angular.module('ambariAdminConsole')
+.controller('UserEditCtrl',
+['$scope', '$rootScope', '$routeParams', 'Cluster', 'User', 'View', '$modal', '$location', 'ConfirmationModal', 'Alert', 'Auth', 'getDifference', 'Group', '$q', 'UserConstants', '$translate', 'RoleDetailsModal',
+function($scope, $rootScope, $routeParams, Cluster, User, View, $modal, $location, ConfirmationModal, Alert, Auth, getDifference, Group, $q, UserConstants, $translate, RoleDetailsModal) {
+
+  var $t = $translate.instant;
+  var nonRole = {
+    permission_name: 'NONE',
+    permission_label: $t('users.roles.none')
+  };
+
+  $scope.constants = {
+    user: $t('common.user'),
+    status: $t('users.status'),
+    admin: $t('users.admin'),
+    password: $t('users.password'),
+    view: $t('common.view').toLowerCase(),
+    cluster: $t('common.cluster').toLowerCase()
+  };
+
+  $scope.user = null;
+  $scope.isCurrentUser = true;
+  $scope.dataLoaded = false;
+  $scope.isGroupEditing = false;
+
+  $scope.enableGroupEditing = function () {
+    $scope.isGroupEditing = true;
+    $scope.editingGroupsList = angular.copy($scope.user.groups);
+  };
+
+  $scope.$watch(function () {
+    return $scope.editingGroupsList;
+  }, function (newValue) {
+    if (newValue) {
+      if (!angular.equals(newValue, $scope.user.groups)) {
+        $scope.updateGroups();
+      }
+    }
+  }, true);
+
+  $scope.showHelpPage = function() {
+    Cluster.getRolesWithAuthorizations().then(function(roles) {
+      RoleDetailsModal.show(roles);
+    });
+  };
+
+  $scope.updateRole = function () {
+    var clusterName = $rootScope.cluster.Clusters.cluster_name;
+    if ($scope.originalRole.permission_name !== $scope.currentRole.permission_name) {
+      if ($scope.currentRole.permission_name === 'NONE') {
+        deleteUserRoles(clusterName, $scope.user).finally(loadUserInfo);
+      } else {
+        if ($scope.user.roles.length) {
+          deleteUserRoles(clusterName, $scope.user, true).finally(function() {
+            addUserRoles(clusterName, $scope.currentRole, $scope.user).finally(loadUserInfo);
+          });
+        } else {
+          addUserRoles(clusterName, $scope.currentRole, $scope.user).finally(loadUserInfo);
+        }
+      }
+    }
+  };
+
+  $scope.updateGroups = function () {
+    var groups = $scope.editingGroupsList.filter(function (item) {
+      return item.trim();
+    }).map(function (item) {
+      return item.trim();
+    });
+    var diff = getDifference($scope.user.groups, groups);
+    var promises = [];
+    // Remove user from groups
+    angular.forEach(diff.del, function (groupName) {
+      promises.push(Group.removeMemberFromGroup(groupName, $scope.user.user_name).catch(function (data) {
+        Alert.error($t('users.alerts.removeUserError'), data.data.message);
+      }));
+    });
+    // Add user to groups
+    angular.forEach(diff.add, function (groupName) {
+      promises.push(Group.addMemberToGroup(groupName, $scope.user.user_name).catch(function (data) {
+        Alert.error($t('users.alerts.cannotAddUser'), data.data.message);
+      }));
+    });
+    $q.all(promises).then(function () {
+      loadUserInfo();
+    });
+    $scope.isGroupEditing = false;
+  };
+
+  $scope.getUserMembership = function (userType) {
+    if (userType) {
+      return $t(UserConstants.TYPES[userType].LABEL_KEY) + " " + $t('users.groupMembership');
+    }
+  };
+
+  $scope.cancelUpdate = function () {
+    $scope.isGroupEditing = false;
+    $scope.editingGroupsList = '';
+  };
+
+  $scope.openChangePwdDialog = function () {
+    var modalInstance = $modal.open({
+      templateUrl: 'views/userManagement/modals/changePassword.html',
+      resolve: {
+        userName: function () {
+          return $scope.user.user_name;
+        }
+      },
+      controller: ['$scope', 'userName', function ($scope, userName) {
+        $scope.passwordData = {
+          password: '',
+          currentUserPassword: ''
+        };
+
+        $scope.form = {};
+        $scope.userName = userName;
+
+        $scope.ok = function () {
+          $scope.form.passwordChangeForm.submitted = true;
+          if ($scope.form.passwordChangeForm.$valid) {
+            modalInstance.close({
+              password: $scope.passwordData.password,
+              currentUserPassword: $scope.passwordData.currentUserPassword
+            });
+          }
+        };
+        $scope.cancel = function () {
+          modalInstance.dismiss('cancel');
+        };
+      }]
+    });
+
+    modalInstance.result.then(function (data) {
+      User.setPassword($scope.user, data.password, data.currentUserPassword).then(function () {
+        Alert.success($t('users.alerts.passwordChanged'));
+      }).catch(function (data) {
+        Alert.error($t('users.alerts.cannotChangePassword'), data.data.message);
+      });
+    });
+  };
+
+  $scope.toggleUserActive = function () {
+    if (!$scope.isCurrentUser) {
+      var newStatusKey = $scope.user.active ? 'inactive' : 'active';
+      ConfirmationModal.show(
+        $t('users.changeStatusConfirmation.title'),
+        $t('users.changeStatusConfirmation.message', {
+          userName: $scope.user.user_name,
+          status: $t('users.' + newStatusKey).toLowerCase()
+        })
+      ).then(function () {
+        User.setActive($scope.user.user_name, $scope.user.active)
+        .catch(function (data) {
+          Alert.error($t('common.alerts.cannotUpdateStatus'), data.data.message);
+          $scope.user.active = !$scope.user.active;
+        });
+      })
+      .catch(function () {
+        $scope.user.active = !$scope.user.active;
+      });
+    }
+  };
+
+  $scope.toggleUserAdmin = function () {
+    if (!$scope.isCurrentUser) {
+      var action = $scope.user.admin ?
+        $t('users.changePrivilegeConfirmation.revoke') : $t('users.changePrivilegeConfirmation.grant');
+      ConfirmationModal.show(
+        $t('users.changePrivilegeConfirmation.title'),
+        $t('users.changePrivilegeConfirmation.message', {
+          action: action,
+          userName: $scope.user.user_name
+        })
+      ).then(function () {
+        User.setAdmin($scope.user.user_name, $scope.user.admin)
+        .then(function () {
+          loadUserInfo();
+        })
+        .catch(function (data) {
+          Alert.error($t('common.alerts.cannotUpdateAdminStatus'), data.data.message);
+          $scope.user.admin = !$scope.user.admin;
+        });
+      })
+      .catch(function () {
+        $scope.user.admin = !$scope.user.admin;
+      });
+    }
+  };
+
+  $scope.removeViewPrivilege = function (name, privilege) {
+    var privilegeObject = {
+      id: privilege.privilege_id,
+      view_name: privilege.view_name,
+      version: privilege.version,
+      instance_name: name
+    };
+    View.deletePrivilege(privilegeObject).then(function () {
+      loadUserInfo();
+    });
+  };
+
+  $scope.deleteUser = function () {
+    ConfirmationModal.show(
+      $t('common.delete', {
+        term: $t('common.user')
+      }),
+      $t('common.deleteConfirmation', {
+        instanceType: $t('common.user').toLowerCase(),
+        instanceName: '"' + $scope.user.user_name + '"'
+      })
+    ).then(function () {
+      Cluster.getPrivilegesForResource({
+        nameFilter: $scope.user.user_name,
+        typeFilter: {value: 'USER'}
+      }).then(function (data) {
+        var clusterPrivilegesIds = [];
+        var viewsPrivileges = [];
+        if (data.items && data.items.length) {
+          angular.forEach(data.items[0].privileges, function (privilege) {
+            if (privilege.PrivilegeInfo.principal_type === 'USER') {
+              if (privilege.PrivilegeInfo.type === 'VIEW') {
+                viewsPrivileges.push({
+                  id: privilege.PrivilegeInfo.privilege_id,
+                  view_name: privilege.PrivilegeInfo.view_name,
+                  version: privilege.PrivilegeInfo.version,
+                  instance_name: privilege.PrivilegeInfo.instance_name
+                });
+              } else {
+                clusterPrivilegesIds.push(privilege.PrivilegeInfo.privilege_id);
+              }
+            }
+          });
+        }
+        User.delete($scope.user.user_name).then(function () {
+          $location.path('/userManagement?tab=users');
+          if (clusterPrivilegesIds.length) {
+            Cluster.deleteMultiplePrivileges($rootScope.cluster.Clusters.cluster_name, clusterPrivilegesIds);
+          }
+          angular.forEach(viewsPrivileges, function (privilege) {
+            View.deletePrivilege(privilege);
+          });
+        });
+      });
+    });
+  };
+
+  function deleteUserRoles(clusterName, user, ignoreAlert) {
+    return Cluster.deleteMultiplePrivileges(
+      clusterName,
+      user.roles.map(function(item) {
+        return item.privilege_id;
+      })
+    ).then(function () {
+      if (!ignoreAlert) {
+        Alert.success($t('users.alerts.roleChangedToNone', {
+          user_name: user.user_name
+        }));
+      }
+    }).catch(function (data) {
+      Alert.error($t('common.alerts.cannotSavePermissions'), data.data.message);
+    });
+  }
+
+  function addUserRoles(clusterName, newRole, user) {
+    return Cluster.createPrivileges(
+      {
+        clusterId: clusterName
+      },
+      [{
+        PrivilegeInfo: {
+          permission_name: newRole.permission_name,
+          principal_name: user.user_name,
+          principal_type: 'USER'
+        }
+      }]
+    ).then(function () {
+      Alert.success($t('users.alerts.roleChanged', {
+        name: user.user_name,
+        role: newRole.permission_label
+      }));
+    }).catch(function (data) {
+      Alert.error($t('common.alerts.cannotSavePermissions'), data.data.message);
+    });
+  }
+
+  function loadUserInfo() {
+    return User.getWithRoles($routeParams.id).then(function (data) {
+      $scope.user = User.makeUser(data.data).Users;
+      $scope.isCurrentUser = $scope.user.user_name === Auth.getCurrentUser();
+      $scope.editingGroupsList = angular.copy($scope.user.groups);
+      parsePrivileges(data.data.privileges);
+      var clusterRole = $scope.user.roles[0];
+      $scope.currentRole = clusterRole || nonRole;
+      $scope.originalRole = clusterRole || nonRole;
+      $scope.dataLoaded = true;
+    });
+  }
+
+  function parsePrivileges(rawPrivileges) {
+    var privileges = {
+      clusters: {},
+      views: {}
+    };
+    angular.forEach(rawPrivileges, function (privilege) {
+      privilege = privilege.PrivilegeInfo;
+      if (privilege.type === 'CLUSTER') {
+        // This is cluster
+        if (privileges.clusters[privilege.cluster_name]) {
+          var preIndex = Cluster.orderedRoles.indexOf(privileges.clusters[privilege.cluster_name].permission_name);
+          var curIndex = Cluster.orderedRoles.indexOf(privilege.permission_name);
+          // set more powerful role
+          if (curIndex < preIndex) {
+            privileges.clusters[privilege.cluster_name] = privilege;
+          }
+        } else {
+          privileges.clusters[privilege.cluster_name] = privilege;
+        }
+      } else if (privilege.type === 'VIEW') {
+        privileges.views[privilege.instance_name] = privileges.views[privilege.instance_name] || {
+          privileges: [],
+          version: privilege.version,
+          view_name: privilege.view_name,
+          privilege_id: privilege.privilege_id
+        };
+        if (privileges.views[privilege.instance_name].privileges.indexOf(privilege.permission_label) === -1) {
+          privileges.views[privilege.instance_name].privileges.push(privilege.permission_label);
+        }
+      }
+    });
+
+    $scope.privilegesView = privileges;
+    $scope.noClusterPriv = $.isEmptyObject(privileges.clusters);
+    $scope.noViewPriv = $.isEmptyObject(privileges.views);
+    $scope.hidePrivileges = $scope.noClusterPriv && $scope.noViewPriv;
+  }
+
+  function loadRoles() {
+    return Cluster.getRoleOptions().then(function (data) {
+      $scope.roleOptions = data;
+    });
+  }
+
+  loadRoles().finally(loadUserInfo);
+
+}]);

+ 23 - 0
ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/userManagement/UserManagementCtrl.js

@@ -0,0 +1,23 @@
+/**
+ * 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.
+ */
+'use strict';
+
+angular.module('ambariAdminConsole')
+.controller('UserManagementCtrl', ['$scope', '$routeParams', function($scope, $routeParams) {
+  $scope.activeTab = $routeParams.tab === 'groups' ? 'GROUPS' : 'USERS';
+}]);

+ 177 - 0
ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/userManagement/UsersListCtrl.js

@@ -0,0 +1,177 @@
+/**
+ * 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.
+ */
+'use strict';
+
+angular.module('ambariAdminConsole')
+.controller('UsersListCtrl',
+['$scope', 'User', '$modal', '$rootScope', 'UserConstants', '$translate', 'Cluster', 'View', 'ConfirmationModal', 'Settings',
+function($scope, User, $modal, $rootScope, UserConstants, $translate, Cluster, View, ConfirmationModal, Settings) {
+  var $t = $translate.instant;
+  $scope.constants = {
+    admin: $t('users.ambariAdmin'),
+    users: $t('common.users').toLowerCase()
+  };
+  $scope.minRowsToShowPagination = Settings.minRowsToShowPagination;
+  $scope.isLoading = false;
+  $scope.users = [];
+  $scope.usersPerPage = 10;
+  $scope.currentPage = 1;
+  $scope.totalUsers = 0;
+  $scope.filters = {
+    name: '',
+    status: null,
+    type: null
+  };
+  $scope.maxVisiblePages = 20;
+  $scope.tableInfo = {
+    total: 0,
+    showed: 0
+  };
+  $scope.isNotEmptyFilter = true;
+
+  function loadUsers() {
+    $scope.isLoading = true;
+    User.list({
+      currentPage: $scope.currentPage,
+      usersPerPage: $scope.usersPerPage,
+      searchString: $scope.filters.name,
+      user_type: $scope.filters.type.value,
+      active: $scope.filters.status.value
+    }).then(function (data) {
+      $scope.totalUsers = data.data.itemTotal;
+      $scope.users = data.data.items.map(User.makeUser);
+      $scope.tableInfo.showed = data.data.items.length;
+      $scope.tableInfo.total = data.data.itemTotal;
+    }).finally(function () {
+      $scope.isLoading = false;
+    });
+  }
+
+  $scope.pageChanged = function () {
+    loadUsers();
+  };
+  $scope.usersPerPageChanges = function () {
+    $scope.resetPagination();
+  };
+
+  $scope.resetPagination = function () {
+    $scope.currentPage = 1;
+    loadUsers();
+  };
+
+  $scope.activeFilterOptions = [
+    {label: $t('common.all'), value: '*'},
+    {label: $t('users.active'), value: true},
+    {label: $t('users.inactive'), value: false}
+  ];
+  $scope.filters.status = $scope.activeFilterOptions[0];
+
+  $scope.typeFilterOptions = [{label: $t('common.all'), value: '*'}]
+    .concat(Object.keys(UserConstants.TYPES).map(function (key) {
+      return {
+        label: $t(UserConstants.TYPES[key].LABEL_KEY),
+        value: UserConstants.TYPES[key].VALUE
+      };
+    }));
+
+  $scope.filters.type = $scope.typeFilterOptions[0];
+
+  $scope.clearFilters = function () {
+    $scope.filters.name = '';
+    $scope.filters.type = $scope.typeFilterOptions[0];
+    $scope.filters.status = $scope.activeFilterOptions[0];
+    $scope.resetPagination();
+  };
+
+  $scope.$watch(
+    function (scope) {
+      return Boolean(scope.filters.name || (scope.filters.status && scope.filters.status.value !== '*')
+        || (scope.filters.type && scope.filters.type.value !== '*'));
+    },
+    function (newValue, oldValue, scope) {
+      scope.isNotEmptyFilter = newValue;
+    }
+  );
+
+  $rootScope.$watch(function (scope) {
+    return scope.LDAPSynced;
+  }, function (LDAPSynced) {
+    if (LDAPSynced === true) {
+      $rootScope.LDAPSynced = false;
+      loadUsers();
+    }
+  });
+
+  $scope.createUser = function () {
+    var modalInstance = $modal.open({
+      templateUrl: 'views/userManagement/modals/userCreate.html',
+      controller: 'UserCreateCtrl',
+      backdrop: 'static'
+    });
+
+    modalInstance.result.finally(loadUsers);
+  };
+
+  $scope.deleteUser = function (user) {
+    ConfirmationModal.show(
+      $t('common.delete', {
+        term: $t('common.user')
+      }),
+      $t('common.deleteConfirmation', {
+        instanceType: $t('common.user').toLowerCase(),
+        instanceName: '"' + user.user_name + '"'
+      })
+    ).then(function () {
+      Cluster.getPrivilegesForResource({
+        nameFilter: user.user_name,
+        typeFilter: {value: 'USER'}
+      }).then(function (data) {
+        var clusterPrivilegesIds = [];
+        var viewsPrivileges = [];
+        if (data.items && data.items.length) {
+          angular.forEach(data.items[0].privileges, function (privilege) {
+            if (privilege.PrivilegeInfo.principal_type === 'USER') {
+              if (privilege.PrivilegeInfo.type === 'VIEW') {
+                viewsPrivileges.push({
+                  id: privilege.PrivilegeInfo.privilege_id,
+                  view_name: privilege.PrivilegeInfo.view_name,
+                  version: privilege.PrivilegeInfo.version,
+                  instance_name: privilege.PrivilegeInfo.instance_name
+                });
+              } else {
+                clusterPrivilegesIds.push(privilege.PrivilegeInfo.privilege_id);
+              }
+            }
+          });
+        }
+        User.delete(user.user_name).then(function () {
+          if (clusterPrivilegesIds.length) {
+            Cluster.deleteMultiplePrivileges($rootScope.cluster.Clusters.cluster_name, clusterPrivilegesIds);
+          }
+          angular.forEach(viewsPrivileges, function (privilege) {
+            View.deletePrivilege(privilege);
+          });
+          loadUsers();
+        });
+      });
+    });
+  };
+
+  loadUsers();
+
+}]);

+ 0 - 75
ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/users/UsersCreateCtrl.js

@@ -1,75 +0,0 @@
-/**
- * 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.
- */
-'use strict';
-
-angular.module('ambariAdminConsole')
-.controller('UsersCreateCtrl',['$scope', '$routeParams', 'User', '$location', 'Alert', 'UnsavedDialog', '$translate', function($scope, $routeParams, User, $location, Alert, UnsavedDialog, $translate) {
-  var $t = $translate.instant;
-  $scope.user = {
-    active: true
-  };
-  var targetUrl = '/users';
-
-  $scope.createUser = function() {
-    $scope.form.submitted = true;
-    if ($scope.form.$valid){
-      User.create({
-        'Users/user_name': $scope.user.user_name,
-        'Users/password': $scope.user.password,
-        'Users/active': !!$scope.user.active,
-        'Users/admin': !!$scope.user.admin
-      }).then(function() {
-        Alert.success($t('users.alerts.userCreated', {
-          userName: $scope.user.user_name,
-          encUserName: encodeURIComponent($scope.user.user_name)
-        }));
-        $scope.form.$setPristine();
-        $location.path(targetUrl);
-      }).catch(function(data) {
-        Alert.error($t('users.alerts.userCreationError'), data.data.message);
-      });
-    }
-  };
-
-  $scope.cancel = function() {
-    $scope.form.$setPristine();
-    $location.path('/users');
-  };
-
-  $scope.$on('$locationChangeStart', function(event, __targetUrl) {
-        
-    if( $scope.form.$dirty ){
-      UnsavedDialog().then(function(action) {
-        targetUrl = __targetUrl.split('#').pop();
-        switch(action){
-          case 'save':
-            $scope.createUser();
-            break;
-          case 'discard':
-            $scope.form.$setPristine();
-            $location.path(targetUrl);
-            break;
-          case 'cancel':
-          targetUrl = '/users';
-            break;
-        }
-      });
-      event.preventDefault();
-    }
-  });
-}]);

+ 0 - 122
ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/users/UsersListCtrl.js

@@ -1,122 +0,0 @@
-/**
- * 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.
- */
-'use strict';
-
-angular.module('ambariAdminConsole')
-  .controller('UsersListCtrl',['$scope', 'User', '$modal', '$rootScope', 'UserConstants', '$translate', 'Settings', function($scope, User, $modal, $rootScope, UserConstants, $translate, Settings) {
-  var $t = $translate.instant;
-  $scope.constants = {
-    admin: $t('users.ambariAdmin'),
-    users: $t('common.users').toLowerCase()
-  };
-  $scope.isLoading = false;
-  $scope.users = [];
-  $scope.usersPerPage = 10;
-  $scope.currentPage = 1;
-  $scope.totalUsers = 1;
-  $scope.currentNameFilter = '';
-  $scope.maxVisiblePages=20;
-  $scope.tableInfo = {
-    total: 0,
-    showed: 0
-  };
-  $scope.isNotEmptyFilter = true;
-
-  $scope.pageChanged = function() {
-    $scope.loadUsers();
-  };
-  $scope.usersPerPageChanges = function() {
-    $scope.resetPagination();
-  };
-
-  $scope.loadUsers = function(){
-    $scope.isLoading = true;
-    User.list({
-      currentPage: $scope.currentPage,
-      usersPerPage: $scope.usersPerPage,
-      searchString: $scope.currentNameFilter,
-      user_type: $scope.currentTypeFilter.value,
-      active: $scope.currentActiveFilter.value,
-      admin: $scope.adminFilter
-    }).then(function(data) {
-      $scope.isLoading = false;
-      $scope.totalUsers = data.data.itemTotal;
-      $scope.users = data.data.items.map(User.makeUser);
-      $scope.tableInfo.showed = data.data.items.length;
-      $scope.tableInfo.total = data.data.itemTotal;
-    });
-  };
-
-  $scope.resetPagination = function() {
-    $scope.currentPage = 1;
-    $scope.loadUsers();
-  };
-
-  $scope.activeFilterOptions = [
-    {label: $t('common.all'), value: '*'},
-    {label: $t('users.active'), value: true},
-    {label: $t('users.inactive'), value:false}
-  ];
-  $scope.currentActiveFilter = $scope.activeFilterOptions[0];
-
-  $scope.typeFilterOptions = [{ label: $t('common.all'), value: '*'}]
-    .concat(Object.keys(UserConstants.TYPES).map(function(key) {
-      return {
-        label: $t(UserConstants.TYPES[key].LABEL_KEY),
-        value: UserConstants.TYPES[key].VALUE
-      };
-    }));
-
-  $scope.currentTypeFilter = $scope.typeFilterOptions[0];
-
-  $scope.adminFilter = false;
-  $scope.toggleAdminFilter = function() {
-    $scope.adminFilter = !$scope.adminFilter;
-    $scope.resetPagination();
-    $scope.loadUsers();
-  };
-
-  $scope.clearFilters = function () {
-    $scope.currentNameFilter = '';
-    $scope.currentTypeFilter = $scope.typeFilterOptions[0];
-    $scope.currentActiveFilter = $scope.activeFilterOptions[0];
-    $scope.adminFilter = false;
-    $scope.resetPagination();
-  };
-
-  $scope.loadUsers();
-
-  $scope.$watch(
-    function (scope) {
-      return Boolean(scope.currentNameFilter || (scope.currentActiveFilter && scope.currentActiveFilter.value !== '*')
-        || (scope.currentTypeFilter && scope.currentTypeFilter.value !== '*') || $scope.adminFilter);
-    },
-    function (newValue, oldValue, scope) {
-      scope.isNotEmptyFilter = newValue;
-    }
-  );
-
-  $rootScope.$watch(function(scope) {
-    return scope.LDAPSynced;
-  }, function(LDAPSynced) {
-    if(LDAPSynced === true){
-      $rootScope.LDAPSynced = false;
-      $scope.loadUsers();
-    }
-  });
-}]);

+ 0 - 290
ambari-admin/src/main/resources/ui/admin-web/app/scripts/controllers/users/UsersShowCtrl.js

@@ -1,290 +0,0 @@
-/**
- * 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.
- */
-'use strict';
-
-angular.module('ambariAdminConsole')
-.controller('UsersShowCtrl', ['$scope', '$routeParams', 'Cluster', 'User', 'View', '$modal', '$location', 'ConfirmationModal', 'Alert', 'Auth', 'getDifference', 'Group', '$q', 'UserConstants', '$translate', function($scope, $routeParams, Cluster, User, View, $modal, $location, ConfirmationModal, Alert, Auth, getDifference, Group, $q, UserConstants, $translate) {
-
-  var $t = $translate.instant;
-
-  $scope.constants = {
-    user: $t('common.user'),
-    status: $t('users.status'),
-    admin: $t('users.admin'),
-    password: $t('users.password'),
-    view: $t('common.view').toLowerCase(),
-    cluster: $t('common.cluster').toLowerCase()
-  };
-
-  function loadUserInfo(){
-    User.get($routeParams.id).then(function(data) {
-      $scope.user = User.makeUser(data).Users;
-      $scope.isCurrentUser = $scope.user.user_name === Auth.getCurrentUser();
-      $scope.editingGroupsList = angular.copy($scope.user.groups);
-    });
-  }
-
-  loadUserInfo();
-  $scope.user;
-  $scope.isCurrentUser = true;
-  $scope.dataLoaded = false;
-
-  $scope.isGroupEditing = false;
-  $scope.enableGroupEditing = function() {
-    $scope.isGroupEditing = true;
-    $scope.editingGroupsList = angular.copy($scope.user.groups);
-  };
-
-  $scope.$watch(function() {
-    return $scope.editingGroupsList;
-  }, function(newValue) {
-    if(newValue){
-      if( !angular.equals(newValue, $scope.user.groups) ){
-        $scope.updateGroups();
-      }
-    }
-  }, true);
-
-  $scope.updateGroups = function() {
-    var groups = $scope.editingGroupsList.toString().split(',').filter(function(item) {return item.trim();}).map(function(item) {return item.trim()});
-    var diff = getDifference($scope.user.groups, groups);
-    var promises = [];
-    // Remove user from groups
-    angular.forEach(diff.del, function(groupName) {
-      promises.push(Group.removeMemberFromGroup(groupName, $scope.user.user_name).catch(function(data) {
-        Alert.error($t('users.alerts.removeUserError'), data.data.message);
-      }));
-    });
-    // Add user to groups
-    angular.forEach(diff.add, function(groupName) {
-      promises.push(Group.addMemberToGroup(groupName, $scope.user.user_name).catch(function(data) {
-        Alert.error($t('users.alerts.cannotAddUser'), data.data.message);
-      }));
-    });
-    $q.all(promises).then(function() {
-      loadUserInfo();
-    });
-    $scope.isGroupEditing = false;
-  };
-
-  $scope.getUserMembership = function(userType) {
-    if(userType) {
-	return $t(UserConstants.TYPES[userType].LABEL_KEY) + " " + $t('users.groupMembership');
-    }
-  };
-
-  $scope.cancelUpdate = function() {
-    $scope.isGroupEditing = false;
-    $scope.editingGroupsList = '';
-  };
-
-  $scope.openChangePwdDialog = function() {
-    var modalInstance = $modal.open({
-      templateUrl: 'views/users/modals/changePassword.html',
-      resolve: {
-        userName: function() {
-          return $scope.user.user_name;
-        }
-      },
-      controller: ['$scope', 'userName', function($scope, userName) {
-        $scope.passwordData = {
-          password: '',
-          currentUserPassword: ''
-        };
-
-        $scope.form = {};
-        $scope.userName = userName;
-
-        $scope.ok = function() {
-          $scope.form.passwordChangeForm.submitted = true;
-          if($scope.form.passwordChangeForm.$valid){
-
-            modalInstance.close({
-              password: $scope.passwordData.password, 
-              currentUserPassword: $scope.passwordData.currentUserPassword
-            });
-          }
-        };
-        $scope.cancel = function() {
-          modalInstance.dismiss('cancel');
-        };
-      }]
-    });
-
-    modalInstance.result.then(function(data) {
-      User.setPassword($scope.user, data.password, data.currentUserPassword).then(function() {
-        Alert.success($t('users.alerts.passwordChanged'));
-      }).catch(function(data) {
-        Alert.error($t('users.alerts.cannotChangePassword'), data.data.message);
-      });
-    }); 
-  };
-
-  $scope.toggleUserActive = function() {
-    if(!$scope.isCurrentUser){
-      var newStatusKey = $scope.user.active ? 'inactive' : 'active',
-        newStatus = $t('users.' + newStatusKey).toLowerCase();
-      ConfirmationModal.show(
-        $t('users.changeStatusConfirmation.title'),
-        $t('users.changeStatusConfirmation.message', {
-          userName: $scope.user.user_name,
-          status: newStatus
-        })
-      ).then(function() {
-        User.setActive($scope.user.user_name, $scope.user.active)
-          .catch(function(data) {
-            Alert.error($t('common.alerts.cannotUpdateStatus'), data.data.message);
-            $scope.user.active = !$scope.user.active;
-          });
-      })
-      .catch(function() {
-        $scope.user.active = !$scope.user.active;
-      });
-    }
-  };    
-  $scope.toggleUserAdmin = function() {
-    if(!$scope.isCurrentUser){
-      var action = $scope.user.admin ?
-        $t('users.changePrivilegeConfirmation.revoke') : $t('users.changePrivilegeConfirmation.grant');
-      ConfirmationModal.show(
-        $t('users.changePrivilegeConfirmation.title'),
-        $t('users.changePrivilegeConfirmation.message', {
-          action: action,
-          userName: $scope.user.user_name
-        })
-      ).then(function() {
-        User.setAdmin($scope.user.user_name, $scope.user.admin)
-        .then(function() {
-          loadPrivileges();
-        })
-        .catch(function (data) {
-          Alert.error($t('common.alerts.cannotUpdateAdminStatus'), data.data.message);
-          $scope.user.admin = !$scope.user.admin;
-        });
-      })
-      .catch(function() {
-        $scope.user.admin = !$scope.user.admin;
-      });
-
-    }
-  };
-
-  $scope.removePrivilege = function(name, privilege) {
-    var privilegeObject = {
-        id: privilege.privilege_id,
-        view_name: privilege.view_name,
-        version: privilege.version,
-        instance_name: name
-    };
-    View.deletePrivilege(privilegeObject).then(function() {
-      loadPrivileges();
-    });
-  };
-
-  $scope.deleteUser = function() {
-    ConfirmationModal.show(
-      $t('common.delete', {
-        term: $t('common.user')
-      }),
-      $t('common.deleteConfirmation', {
-        instanceType: $t('common.user').toLowerCase(),
-        instanceName: '"' + $scope.user.user_name + '"'
-      })
-    ).then(function() {
-      Cluster.getPrivilegesForResource({
-        nameFilter : $scope.user.user_name,
-        typeFilter : {value: 'USER'}
-      }).then(function(data) {
-        var clusterPrivilegesIds = [];
-        var viewsPrivileges = [];
-        if (data.items && data.items.length) {
-          angular.forEach(data.items[0].privileges, function(privilege) {
-            if (privilege.PrivilegeInfo.principal_type === 'USER') {
-              if (privilege.PrivilegeInfo.type === 'VIEW') {
-                viewsPrivileges.push({
-                  id: privilege.PrivilegeInfo.privilege_id,
-                  view_name: privilege.PrivilegeInfo.view_name,
-                  version: privilege.PrivilegeInfo.version,
-                  instance_name: privilege.PrivilegeInfo.instance_name
-                });
-              } else {
-                clusterPrivilegesIds.push(privilege.PrivilegeInfo.privilege_id);
-              }
-            }
-          });
-        }
-        User.delete($scope.user.user_name).then(function() {
-          $location.path('/users');
-          if (clusterPrivilegesIds.length) {
-            Cluster.getAllClusters().then(function (clusters) {
-              var clusterName = clusters[0].Clusters.cluster_name;
-              Cluster.deleteMultiplePrivileges(clusterName, clusterPrivilegesIds);
-            });
-          }
-          angular.forEach(viewsPrivileges, function(privilege) {
-            View.deletePrivilege(privilege);
-          });
-        });
-      });
-    });
-  };
-
-  // Load privileges
-  function loadPrivileges(){
-    User.getPrivileges($routeParams.id).then(function(data) {
-      var privileges = {
-        clusters: {},
-        views: {}
-      };
-      angular.forEach(data.data.items, function(privilege) {
-        privilege = privilege.PrivilegeInfo;
-        if(privilege.type === 'CLUSTER'){
-          // This is cluster
-          if (privileges.clusters[privilege.cluster_name]) {
-            var preIndex = Cluster.orderedRoles.indexOf(privileges.clusters[privilege.cluster_name].permission_name);
-            var curIndex = Cluster.orderedRoles.indexOf(privilege.permission_name);
-            // replace when cur is a more powerful role
-            if (curIndex < preIndex) {
-              privileges.clusters[privilege.cluster_name] = privilege;
-            }
-          } else {
-            privileges.clusters[privilege.cluster_name] = privilege;
-          }
-        } else if ( privilege.type === 'VIEW'){
-          privileges.views[privilege.instance_name] = privileges.views[privilege.instance_name] || { privileges:[]};
-          privileges.views[privilege.instance_name].version = privilege.version;
-          privileges.views[privilege.instance_name].view_name = privilege.view_name;
-          privileges.views[privilege.instance_name].privilege_id = privilege.privilege_id;
-          if (privileges.views[privilege.instance_name].privileges.indexOf(privilege.permission_label) == -1) {
-            privileges.views[privilege.instance_name].privileges.push(privilege.permission_label);
-          }
-        }
-      });
-
-      $scope.privileges = data.data.items.length ? privileges : null;
-      $scope.noClusterPriv = $.isEmptyObject(privileges.clusters);
-      $scope.noViewPriv = $.isEmptyObject(privileges.views);
-      $scope.hidePrivileges = $scope.noClusterPriv && $scope.noViewPriv;
-      $scope.dataLoaded = true;
-
-    }).catch(function(data) {
-      Alert.error($t('common.alerts.cannotLoadPrivileges'), data.data.message);
-    });
-  }
-  loadPrivileges();
-}]);

+ 27 - 24
ambari-admin/src/main/resources/ui/admin-web/app/scripts/i18n.config.js

@@ -32,16 +32,15 @@ angular.module('ambariAdminConsole')
     'common.register': 'Register',
     'common.clusters': 'Clusters',
     'common.views': 'Views',
-    'common.viewUrls': 'View URLs',
     'common.roles': 'Roles',
     'common.users': 'Users',
     'common.groups': 'Groups',
     'common.versions': 'Versions',
     'common.stack': 'Stack',
     'common.details': 'Details',
+    'common.dashboard': 'Dashboard',
     'common.goToDashboard': 'Go to Dashboard',
     'common.exportBlueprint': 'Export Blueprint',
-    'common.blueprint': 'Blueprint',
     'common.download': 'Download',
     'common.noClusters': 'No Clusters',
     'common.noViews': 'No Views',
@@ -70,7 +69,6 @@ angular.module('ambariAdminConsole')
     'common.renameCluster': 'Rename Cluster',
     'common.renameClusterTip': 'Only alpha-numeric characters, up to 80 characters',
     'common.clusterCreationInProgress': 'Cluster creation in progress...',
-    'common.userGroupManagement': 'User + Group Management',
     'common.all': 'All',
     'common.group': 'Group',
     'common.user': 'User',
@@ -80,6 +78,7 @@ angular.module('ambariAdminConsole')
     'common.remoteClusterDelConfirmation': 'Are you sure you want to delete {{instanceType}} {{instanceName}}? This operation cannot be undone.',
     'common.messageInstanceAffected': 'The following View Instances are using this Remote Cluster for configuration, and will need to be reconfigured:',
     'common.local': 'Local',
+    'common.remote': 'Remote',
     'common.pam': 'PAM',
     'common.ldap': 'LDAP',
     'common.jwt': 'JWT',
@@ -96,6 +95,13 @@ angular.module('ambariAdminConsole')
     'common.undo': 'Undo',
     'common.fromGroupMark': '(from group)',
     'common.copy': '_Copy',
+    'common.clusterInformation': 'Cluster Information',
+    'common.clusterManagement': 'Cluster Management',
+    'common.userManagement': 'User Management',
+    'common.admin': 'Admin',
+    'common.actions': 'Actions',
+    'common.error': 'Error',
+    'common.select': 'Select',
 
     'common.clusterNameChangeConfirmation.title': 'Confirm Cluster Name Change',
     'common.clusterNameChangeConfirmation.message': 'Are you sure you want to change the cluster name to {{clusterName}}?',
@@ -163,23 +169,12 @@ angular.module('ambariAdminConsole')
 
     'main.title': 'Welcome to Apache Ambari',
     'main.noClusterDescription': 'Provision a cluster, manage who can access the cluster, and customize views for Ambari users.',
-    'main.hasClusterDescription': 'Monitor your cluster resources, manage who can access the cluster, and customize views for Ambari users.',
     'main.autoLogOut': 'Automatic Logout',
 
-    'main.operateCluster.title': 'Operate Your Cluster',
-    'main.operateCluster.description': 'Manage the configuration of your cluster and monitor the health of your services',
-    'main.operateCluster.manageRoles': 'Manage Roles',
-
     'main.createCluster.title': 'Create a Cluster',
     'main.createCluster.description': 'Use the Install Wizard to select services and configure your cluster',
     'main.createCluster.launchInstallWizard': 'Launch Install Wizard',
 
-    'main.manageUsersAndGroups.title': 'Manage Users + Groups',
-    'main.manageUsersAndGroups.description': 'Manage the users and groups that can access Ambari',
-
-    'main.deployViews.title': 'Deploy Views',
-    'main.deployViews.description': 'Create view instances and grant permissions',
-
     'main.controls.remainLoggedIn': 'Remain Logged In',
     'main.controls.logOut': 'Log Out Now',
 
@@ -187,7 +182,6 @@ angular.module('ambariAdminConsole')
     'views.viewInstance': 'View Instance',
     'views.create': 'Create Instance',
     'views.clone': 'Clone Instance',
-    'views.createViewInstance': 'Create View Instance',
     'views.edit': 'Edit',
     'views.viewName': 'View Name',
     'views.instances': 'Instances',
@@ -235,7 +229,6 @@ angular.module('ambariAdminConsole')
     'views.alerts.cannotEditInstance': 'Cannot Edit Static Instances',
     'views.alerts.cannotDeleteStaticInstance': 'Cannot Delete Static Instances',
     'views.alerts.deployError': 'Error deploying. Check Ambari Server log.',
-    'views.alerts.unableToCreate': 'Unable to create view instances',
     'views.alerts.cannotUseOption': 'This view cannot use this option',
     'views.alerts.unableToResetErrorMessage': 'Unable to reset error message for prop: {{key}}',
     'views.alerts.instanceCreated': 'Created View Instance {{instanceName}}',
@@ -252,7 +245,12 @@ angular.module('ambariAdminConsole')
     'views.alerts.savedRemoteClusterInformation': 'Remote cluster information is saved.',
     'views.alerts.credentialsUpdated': 'Credentials Updated.',
 
-    'urls.name': 'Name',
+    'views.table.viewType': 'View Type',
+    'views.emptyTable': 'No Views to display',
+    'views.createInstance.selectView': 'Select View',
+    'views.createInstance.selectVersion': 'Select Version',
+    'views.createInstance.clusterType': 'Cluster Type',
+
     'urls.url': 'URL',
     'urls.viewUrls': 'View URLs',
     'urls.createNewUrl': 'Create New URL',
@@ -263,7 +261,6 @@ angular.module('ambariAdminConsole')
     'urls.step1': 'Create URL',
     'urls.step2': 'Select instance',
     'urls.step3': 'Assign URL',
-    'urls.noUrlsToDisplay': 'No URLs to display.',
     'urls.noViewInstances': 'No view instances',
     'urls.none': 'None',
     'urls.change': 'Change',
@@ -276,9 +273,12 @@ angular.module('ambariAdminConsole')
     'clusters.assignRoles': 'Assign roles to these {{term}}',
 
     'clusters.alerts.cannotLoadClusterData': 'Cannot load cluster data',
+    'clusters.devBlueprint': 'Dev Blueprint',
 
-    'groups.createLocal': 'Create Local Group',
+    'groups.createLocal': 'Add Groups',
     'groups.name': 'Group name',
+    'groups.role': 'Add roles to this group',
+    'groups.addUsers': 'Add users to this group',
     'groups.members': 'Members',
     'groups.membersPlural': '{{n}} member{{n == 1 ? "" : "s"}}',
 
@@ -288,7 +288,7 @@ angular.module('ambariAdminConsole')
     'groups.alerts.getGroupsListError': 'Get groups list error',
 
     'users.username': 'Username',
-    'users.userName': 'User name',
+    'users.user.name': 'User name',
     'users.admin': 'Admin',
     'users.ambariAdmin': 'Ambari Admin',
     'users.ambariClusterURL': 'Ambari Cluster URL',
@@ -298,12 +298,16 @@ angular.module('ambariAdminConsole')
     'users.yourPassword': 'Your Password',
     'users.newPassword': 'New User Password',
     'users.newPasswordConfirmation': 'New User Password Confirmation',
-    'users.create': 'Create Local User',
+    'users.create': 'Add Users',
     'users.active': 'Active',
     'users.inactive': 'Inactive',
     'users.status': 'Status',
     'users.password': 'Password',
+    'users.role': 'Add roles for this user',
+    'users.confirmPassword': 'Confirm Password',
     'users.passwordConfirmation': 'Password сonfirmation',
+    'users.isAmbariAdmin': 'Is this user an Ambari Admin?',
+    'users.isActive': 'Deactivate this user?',
     'users.userIsAdmin': 'This user is an Ambari Admin and has all privileges.',
     'users.showAll': 'Show all users',
     'users.showAdmin': 'Show only admin users',
@@ -333,7 +337,7 @@ angular.module('ambariAdminConsole')
     'users.alerts.wrongPassword': 'Password must match!',
     'users.alerts.usernameRequired': 'Username Required',
     'users.alerts.cannotChange': 'Cannot Change {{term}}',
-    'users.alerts.userCreated': 'Created user <a href="#/users/{{encUserName}}">{{userName}}</a>',
+    'users.alerts.userCreated': 'Created user <a href="#/users/{{encUserName}}/edit">{{userName}}</a>',
     'users.alerts.userCreationError': 'User creation error',
     'users.alerts.removeUserError': 'Removing from group error',
     'users.alerts.cannotAddUser': 'Cannot add user to group',
@@ -344,7 +348,7 @@ angular.module('ambariAdminConsole')
     'users.alerts.usersEffectivePrivilege': '{{user_name}}\'s effective privilege through its Group(s) is higher than your selected privilege.',
 
     'versions.current': 'Current',
-    'versions.addVersion': 'Add Version or Hotfix',
+    'versions.addVersion': 'Add Version',
     'versions.defaultVersion': '(Default Version Definition)',
     'versions.inUse': 'In Use',
     'versions.installed': 'Installed',
@@ -369,7 +373,6 @@ angular.module('ambariAdminConsole')
     'versions.installOn': 'Install on...',
 
     'versions.register.title': 'Register Version',
-
     'versions.register.error.header': 'Unable to Register',
     'versions.register.error.body': 'You are attempting to register a version with a Base URL that is already in use with an existing registered version. You *must* review your Base URLs and confirm they are unique for the version you are trying to register.',
 

+ 64 - 97
ambari-admin/src/main/resources/ui/admin-web/app/scripts/routes.js

@@ -19,11 +19,6 @@
 
 angular.module('ambariAdminConsole')
 .constant('ROUTES', {
-  root: {
-    url: '/',
-    templateUrl: 'views/main.html',
-    controller: 'MainCtrl'
-  },
   authentication: {
     main: {
       url: '/authentication',
@@ -32,7 +27,7 @@ angular.module('ambariAdminConsole')
     }
   },
   loginActivities: {
-    loginMessage:{
+    loginMessage: {
       url: '/loginMessage',
       templateUrl: 'views/loginActivities/main.html',
       controller: 'LoginActivitiesMainCtrl'
@@ -43,157 +38,129 @@ angular.module('ambariAdminConsole')
       controller: 'LoginActivitiesMainCtrl'
     }
   },
-  users: {
-    list: {
-      url: '/users',
-      templateUrl: 'views/users/list.html',
-      controller: 'UsersListCtrl'
+  userManagement: {
+    main: {
+      url: '/userManagement',
+      templateUrl: 'views/userManagement/main.html',
+      controller: 'UserManagementCtrl',
+      label: 'Users'
     },
-    edit: {
+    editUser: {
       url: '/users/:id/edit',
-      templateUrl: 'views/users/create.html',
-      controller: 'UsersCreateCtrl'
-    },
-    create: {
-      url: '/users/new',
-      templateUrl: 'views/users/create.html',
-      controller: 'UsersCreateCtrl'
-    },
-    show: {
-      url: '/users/:id*',
-      templateUrl: 'views/users/show.html',
-      controller: 'UsersShowCtrl'
-    }
-  },
-  groups: {
-    list: {
-      url: '/groups',
-      templateUrl: 'views/groups/list.html',
-      controller: 'GroupsListCtrl'
+      templateUrl: 'views/userManagement/userEdit.html',
+      controller: 'UserEditCtrl',
+      label: 'Users'
     },
-    edit: {
+    editGroup: {
       url: '/groups/:id/edit',
-      templateUrl: 'views/groups/edit.html',
-      controller: 'GroupsEditCtrl'
+      templateUrl: 'views/userManagement/groupEdit.html',
+      controller: 'GroupEditCtrl',
+      label: 'Groups'
     },
-    create: {
-      url: '/groups/new',
-      templateUrl: 'views/groups/create.html',
-      controller: 'GroupsCreateCtrl'
-    }
   },
   views: {
     list: {
       url: '/views',
-      templateUrl: 'views/ambariViews/listTable.html',
-      controller: 'ViewsListCtrl'
+      templateUrl: 'views/ambariViews/viewsList.html',
+      controller: 'ViewsListCtrl',
+      label: 'Views'
     },
-    listViewUrls: {
-      url: '/viewUrls',
-      templateUrl: 'views/ambariViews/listUrls.html',
-      controller: 'ViewsListCtrl'
+    edit: {
+      url: '/views/:viewId/versions/:version/instances/:instanceId/edit',
+      templateUrl: 'views/ambariViews/edit.html',
+      controller: 'ViewsEditCtrl',
+      label: 'Views'
     },
-    createViewUrl:{
+    createViewUrl: {
       url: '/urls/new',
       templateUrl: 'views/urls/create.html',
-      controller: 'ViewUrlCtrl'
+      controller: 'ViewUrlCtrl',
+      label: 'Views'
     },
-    linkViewUrl:{
+    linkViewUrl: {
       url: '/urls/link/:viewName/:viewVersion/:viewInstanceName',
       templateUrl: 'views/urls/create.html',
-      controller: 'ViewUrlCtrl'
+      controller: 'ViewUrlCtrl',
+      label: 'Views'
     },
-    editViewUrl:{
+    editViewUrl: {
       url: '/urls/edit/:urlName',
       templateUrl: 'views/urls/edit.html',
-      controller: 'ViewUrlEditCtrl'
-    },
-    clone: {
-      url: '/views/:viewId/versions/:version/instances/:instanceId/clone',
-      templateUrl: 'views/ambariViews/create.html',
-      controller: 'CreateViewInstanceCtrl'
-    },
-    edit: {
-      url: '/views/:viewId/versions/:version/instances/:instanceId/edit',
-      templateUrl: 'views/ambariViews/edit.html',
-      controller: 'ViewsEditCtrl'
-    },
-    create: {
-      url: '/views/:viewId/new',
-      templateUrl: 'views/ambariViews/create.html',
-      controller: 'CreateViewInstanceCtrl'
+      controller: 'ViewUrlEditCtrl',
+      label: 'Views'
     }
   },
   stackVersions: {
     list: {
       url: '/stackVersions',
       templateUrl: 'views/stackVersions/list.html',
-      controller: 'StackVersionsListCtrl'
+      controller: 'StackVersionsListCtrl',
+      label: 'Versions'
     },
     create: {
       url: '/stackVersions/create',
       templateUrl: 'views/stackVersions/stackVersionPage.html',
-      controller: 'StackVersionsCreateCtrl'
+      controller: 'StackVersionsCreateCtrl',
+      label: 'Versions'
     },
     edit: {
       url: '/stackVersions/:stackName/:versionId/edit',
       templateUrl: 'views/stackVersions/stackVersionPage.html',
-      controller: 'StackVersionsEditCtrl'
+      controller: 'StackVersionsEditCtrl',
+      label: 'Versions'
     }
   },
   remoteClusters: {
     list: {
       url: '/remoteClusters',
       templateUrl: 'views/remoteClusters/list.html',
-      controller: 'RemoteClustersListCtrl'
+      controller: 'RemoteClustersListCtrl',
+      label: 'Remote Clusters'
     },
     create: {
       url: '/remoteClusters/create',
       templateUrl: 'views/remoteClusters/remoteClusterPage.html',
-      controller: 'RemoteClustersCreateCtrl'
+      controller: 'RemoteClustersCreateCtrl',
+      label: 'Remote Clusters'
     },
-     edit: {
-     url: '/remoteClusters/:clusterName/edit',
-     templateUrl: 'views/remoteClusters/editRemoteClusterPage.html',
-     controller: 'RemoteClustersEditCtrl'
-     }
+    edit: {
+      url: '/remoteClusters/:clusterName/edit',
+      templateUrl: 'views/remoteClusters/editRemoteClusterPage.html',
+      controller: 'RemoteClustersEditCtrl',
+      label: 'Remote Clusters'
+    }
   },
   clusters: {
-    manageAccess: {
-      url: '/clusters/:id/manageAccess',
-      templateUrl: 'views/clusters/manageAccess.html',
-      controller: 'ClustersManageAccessCtrl'
-    },
-    userAccessList: {
-      url: '/clusters/:id/userAccessList',
-      templateUrl: 'views/clusters/userAccessList.html',
-      controller: 'UserAccessListCtrl'
-    },
-    exportBlueprint: {
-      url: '/clusters/:id/exportBlueprint',
-      templateUrl: 'views/clusters/exportBlueprint.html',
-      controller: 'ExportBlueprintCtrl'
+    clusterInformation: {
+      url: '/clusterInformation',
+      templateUrl: 'views/clusters/clusterInformation.html',
+      controller: 'ClusterInformationCtrl',
+      label: 'Cluster Information'
     }
   },
-  dashboard:{
+  dashboard: {
     url: '/dashboard',
-    controller: ['$window', function($window) {
+    controller: ['$window', function ($window) {
       $window.location.replace('/#/main/dashboard');
     }],
     template: ''
   }
 })
-.config(['$routeProvider', '$locationProvider', 'ROUTES', function($routeProvider, $locationProvider, ROUTES) {
-  var createRoute = function(routeObj) {
-    if(routeObj.url){
+.config(['$routeProvider', '$locationProvider', 'ROUTES', function ($routeProvider, $locationProvider, ROUTES) {
+  var createRoute = function (routeObj) {
+    if (routeObj.url) {
       $routeProvider.when(routeObj.url, routeObj);
     } else {
       angular.forEach(routeObj, createRoute);
     }
   };
+  var rootUrl = ROUTES['clusters']['clusterInformation'].url;
   angular.forEach(ROUTES, createRoute);
+  $routeProvider.otherwise({
+    redirectTo: rootUrl
+  });
 }])
-.run(['$rootScope', 'ROUTES', 'Settings', function($rootScope, ROUTES, Settings) {
+.run(['$rootScope', 'ROUTES', 'Settings', function ($rootScope, ROUTES, Settings) {
   // Make routes available in every template and controller
   $rootScope.ROUTES = ROUTES;
   $rootScope.$on('$locationChangeStart', function (e, nextUrl) {
@@ -215,7 +182,7 @@ angular.module('ambariAdminConsole')
    * @param {string} url
    * @returns {string}
    */
-  $rootScope.fromSiteRoot = function(url) {
+  $rootScope.fromSiteRoot = function (url) {
     var path = url[0] === '/' ? url.substring(1) : url;
     return Settings.siteRoot + path;
   };

+ 51 - 39
ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/Cluster.js

@@ -18,7 +18,11 @@
 'use strict';
 
 angular.module('ambariAdminConsole')
-.factory('Cluster', ['$http', '$q', 'Settings', function($http, $q, Settings) {
+.factory('Cluster', ['$http', '$q', 'Settings', '$translate', function($http, $q, Settings, $translate) {
+  var $t = $translate.instant;
+  var permissions = null;
+  var rolesWithAuthorizations = null;
+
   return {
     repoStatusCache : {},
 
@@ -34,6 +38,13 @@ angular.module('ambariAdminConsole')
 
     ineditableRoles : ['VIEW.USER', 'AMBARI.ADMINISTRATOR'],
 
+    sortRoles: function(roles) {
+      var orderedRoles = ['AMBARI.ADMINISTRATOR'].concat(this.orderedRoles);
+      return roles.sort(function(a, b) {
+        return orderedRoles.indexOf(a.permission_name) - orderedRoles.indexOf(b.permission_name);
+      });
+    },
+
     getAllClusters: function() {
       var deferred = $q.defer();
       $http.get(Settings.baseUrl + '/clusters?fields=Clusters/cluster_id', {mock: 'cluster/clusters.json'})
@@ -120,22 +131,48 @@ angular.module('ambariAdminConsole')
 
       return deferred.promise;
     },
+    getRoleOptions: function () {
+      var roleOptions = [];
+      var deferred = $q.defer();
+      var localDeferred = $q.defer();
+      var promise = permissions ? localDeferred.promise : this.getPermissions();
+
+      localDeferred.resolve(permissions);
+      promise.then(function(data) {
+        permissions = data;
+        roleOptions = data.map(function(item) {
+          return item.PermissionInfo;
+        });
+        roleOptions.unshift({
+          permission_name: 'NONE',
+          permission_label: $t('users.roles.none')
+        });
+      }).finally(function() {
+        deferred.resolve(roleOptions);
+      });
+      return deferred.promise;
+    },
     getRolesWithAuthorizations: function() {
-      var self = this;
       var deferred = $q.defer();
-      $http({
-        method: 'GET',
-        url: Settings.baseUrl + '/permissions?PermissionInfo/resource_name.in(CLUSTER,AMBARI)',
-        mock: 'permission/permissions.json',
-        params: {
-          fields: 'PermissionInfo/*,authorizations/AuthorizationInfo/*'
-        }
-      })
-        .success(function(data) {
-          deferred.resolve(data.items);
+      if (rolesWithAuthorizations) {
+        deferred.resolve(rolesWithAuthorizations);
+      } else {
+        $http({
+          method: 'GET',
+          url: Settings.baseUrl + '/permissions?PermissionInfo/resource_name.in(CLUSTER,AMBARI)',
+          mock: 'permission/permissions.json',
+          params: {
+            fields: 'PermissionInfo/*,authorizations/AuthorizationInfo/*'
+          }
         })
-        .catch(function(data) {
-          deferred.reject(data); });
+          .success(function (data) {
+            rolesWithAuthorizations = data.items;
+            deferred.resolve(data.items);
+          })
+          .catch(function (data) {
+            deferred.reject(data);
+          });
+      }
 
       return deferred.promise;
     },
@@ -159,31 +196,6 @@ angular.module('ambariAdminConsole')
 
       return deferred.promise;
     },
-    getPrivilegesWithFilters: function(params) {
-      var deferred = $q.defer();
-      var isUser = params.typeFilter.value == 'USER';
-      var endpoint = isUser? '/users' : '/groups';
-      var nameURL = isUser? '&Users/user_name.matches(.*' : '&Groups/group_name.matches(.*';
-      var nameFilter = params.nameFilter? nameURL + params.nameFilter + '.*)' : '';
-      var roleFilter = params.roleFilter.value? '&privileges/PrivilegeInfo/permission_name.matches(.*' + params.roleFilter.value + '.*)' : '';
-      $http({
-        method: 'GET',
-        url: Settings.baseUrl + endpoint + '?'
-        + 'fields=privileges/PrivilegeInfo/*'
-        + nameFilter
-        + roleFilter
-        + '&from=' + (params.currentPage - 1) * params.usersPerPage
-        + '&page_size=' + params.usersPerPage
-      })
-      .success(function(data) {
-        deferred.resolve(data);
-      })
-      .catch(function(data) {
-        deferred.reject(data);
-      });
-
-      return deferred.promise;
-    },
     getPrivilegesForResource: function(params) {
       var deferred = $q.defer();
       var isUser = (params.typeFilter.value == 'USER');

+ 51 - 93
ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/Group.js

@@ -18,49 +18,29 @@
 'use strict';
 
 angular.module('ambariAdminConsole')
-.factory('Group', ['$http', '$q', 'Settings', 'GroupConstants', '$translate', function($http, $q, Settings, GroupConstants, $translate) {
+.factory('Group', ['$http', '$q', 'Settings', '$translate', 'Cluster', function($http, $q, Settings, $translate, Cluster) {
   var $t = $translate.instant;
-  function Group(item){
-    if(typeof item === 'string'){
-      this.group_name = item;
-    } else if(typeof item === 'object'){
-      angular.extend(this, item.Groups);
-      this.getMembers();
+  var types = {
+    LOCAL: {
+      VALUE: 'LOCAL',
+      LABEL_KEY: 'common.local'
+    },
+    PAM: {
+      VALUE: 'PAM',
+      LABEL_KEY: 'common.pam'
+    },
+    LDAP: {
+      VALUE: 'LDAP',
+      LABEL_KEY: 'common.ldap'
     }
-  }
+  };
 
-  Group.prototype.isLDAP = function() {
-    var deferred = $q.defer();
-    var self = this;
-    if( typeof this.ldap_group === 'boolean' ){
-      deferred.resolve(this.ldap_group)
-    } else {
-      $http({
-        method: 'GET',
-        url: Settings.baseUrl + '/groups/'+this.group_name
-      }).
-      success(function(data) {
-        self.ldap_group = data.Groups.ldap_group;
-        deferred.resolve(self.ldap_group);
-      });
+  function Group(item) {
+    if (typeof item === 'string') {
+      this.group_name = item;
+    } else if (typeof item === 'object') {
+      angular.extend(this, item.Groups);
     }
-
-    return deferred.promise;
-  }
-
-  Group.prototype.getGroupType = function() {
-    var deferred = $q.defer();
-    var self = this;
-    $http({
-      method: 'GET',
-      url: Settings.baseUrl + '/groups/'+this.group_name
-    }).
-    success(function(data) {
-      self.group_type = data.Groups.group_type;
-      deferred.resolve(self.group_type);
-    });
-
-    return deferred.promise;
   }
 
   Group.prototype.save = function() {
@@ -86,28 +66,6 @@ angular.module('ambariAdminConsole')
     return deferred.promise;
   };
 
-  Group.prototype.getMembers = function() {
-    var deferred = $q.defer();
-    var self = this;
-
-    $http({
-      method: 'GET',
-      url: Settings.baseUrl + '/groups/' + this.group_name + '/members'
-    })
-    .success(function(data) {
-      self.members = [];
-      angular.forEach(data.items, function(member) {
-        self.members.push(member.MemberInfo.user_name);
-      });
-      deferred.resolve(self.members);
-    })
-    .error(function(data) {
-      deferred.reject(data);
-    });
-
-    return deferred.promise;
-  };
-
   Group.prototype.saveMembers = function() {
     var self = this;
     var deferred = $q.defer();
@@ -132,27 +90,6 @@ angular.module('ambariAdminConsole')
       deferred.reject(data);
     });
     return deferred.promise;
-  }
-
-  Group.prototype.addMember = function(memberName) {
-    var deferred = $q.defer();
-
-    $http({
-      method: 'POST',
-      url: Settings.baseUrl + '/groups/' + this.group_name + '/members' + '/'+ encodeURIComponent(member.user_name)
-    })
-    .success(function(data) {
-      deferred.resolve(data)
-    })
-    .error(function(data) {
-      deferred.reject(data);
-    });
-
-    return deferred.promise;
-  };
-
-  Group.prototype.removeMember = function(memberId) {
-    return $http.delete(Settings.baseUrl + '/groups/'+this.group_name+'/members/'+memberId);
   };
 
   Group.removeMemberFromGroup = function(groupName, memberName) {
@@ -174,14 +111,8 @@ angular.module('ambariAdminConsole')
       + (params.group_type === '*' ? '' : '&Groups/group_type=' + params.group_type)
     )
     .success(function(data) {
-      var groups = [];
-      if(Array.isArray(data.items)){
-        angular.forEach(data.items, function(item) {
-          groups.push(new Group(item));
-        });
-      }
-      groups.itemTotal = data.itemTotal;
-      deferred.resolve(groups);
+      data.items.itemTotal = data.itemTotal;
+      deferred.resolve(data.items);
     })
     .error(function(data) {
       deferred.reject(data);
@@ -204,6 +135,23 @@ angular.module('ambariAdminConsole')
     });
   };
 
+  Group.get = function (group_name) {
+    var deferred = $q.defer();
+    $http({
+      method: 'GET',
+      url: Settings.baseUrl + '/groups/' + group_name +
+      '?fields=Groups,privileges/PrivilegeInfo/*,members/MemberInfo'
+    }).success(function (data) {
+      deferred.resolve(Group.makeGroup(data));
+    });
+
+    return deferred.promise;
+  };
+
+  Group.getTypes = function () {
+    return types;
+  };
+
   /**
      * Generate group info to display by response data from API.
      * Generally this is a single point to manage all required and useful data
@@ -212,9 +160,19 @@ angular.module('ambariAdminConsole')
      * @param {Object} group - object from API response
      * @returns {Object}
      */
-   Group.makeGroup = function(group) {
-      group.groupTypeName = $t(GroupConstants.TYPES[group.group_type].LABEL_KEY);
-      return group;
+  Group.makeGroup = function(data) {
+    var group = new Group(data.Groups.group_name);
+    group.groupTypeName = $t(types[data.Groups.group_type].LABEL_KEY);
+    group.group_type = data.Groups.group_type;
+    group.ldap_group = data.Groups.ldap_group;
+    group.privileges = data.privileges;
+    group.members = data.members;
+    group.roles = Cluster.sortRoles(data.privileges.filter(function(item) {
+      return item.PrivilegeInfo.type === 'CLUSTER' || item.PrivilegeInfo.type === 'AMBARI';
+    }).map(function(item) {
+      return item.PrivilegeInfo;
+    }));
+    return group;
   };
 
   return Group;

+ 2 - 3
ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/RoleDetailsModal.js

@@ -22,11 +22,10 @@ angular.module('ambariAdminConsole')
   return {
     show: function(roles) {
       roles = roles.map(function(role) {
-        role.authorizations = role.authorizations.map(function(authorization) {
+        var r = role.PermissionInfo;
+        r.authorizations = role.authorizations.map(function(authorization) {
           return authorization.AuthorizationInfo;
         });
-        var r = role.PermissionInfo;
-        r.authorizations = role.authorizations;
         return r;
       });
       var modalInstance = $modal.open({

+ 16 - 1
ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/Stack.js

@@ -87,6 +87,20 @@ angular.module('ambariAdminConsole')
       return deferred.promise;
     },
 
+    getGPLLicenseAccepted: function() {
+      var deferred = $q.defer();
+
+      $http.get(Settings.baseUrl + '/services/AMBARI/components/AMBARI_SERVER?fields=RootServiceComponents/properties/gpl.license.accepted&minimal_response=true', {mock: 'true'})
+        .then(function(data) {
+          deferred.resolve(data.data.RootServiceComponents.properties['gpl.license.accepted']);
+        })
+        .catch(function(data) {
+          deferred.reject(data);
+        });
+
+      return deferred.promise;
+    },
+    
     allPublicStackVersions: function() {
       var self = this;
       var url = '/version_definitions?fields=VersionDefinition/stack_default,VersionDefinition/type,' +
@@ -391,7 +405,8 @@ angular.module('ambariAdminConsole')
               $http.post(url + '/operating_systems/' + os.OperatingSystems.os_type + '/repositories/' + repo.Repositories.repo_id + '?validate_only=true',
                 {
                   "Repositories": {
-                    "base_url": repo.Repositories.base_url
+                    "base_url": repo.Repositories.base_url,
+                    "repo_name": repo.Repositories.repo_name
                   }
                 },
                 {

+ 15 - 5
ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/User.js

@@ -18,7 +18,7 @@
 'use strict';
 
 angular.module('ambariAdminConsole')
-  .factory('User', ['Restangular', '$http', 'Settings', 'UserConstants', '$translate', function(Restangular, $http, Settings, UserConstants, $translate) {
+.factory('User', ['Restangular', '$http', 'Settings', 'UserConstants', '$translate', 'Cluster', function(Restangular, $http, Settings, UserConstants, $translate, Cluster) {
   Restangular.addResponseInterceptor(function(data, operation, what, url, response, deferred) {
     var extractedData;
     if(operation === 'getList'){
@@ -31,14 +31,13 @@ angular.module('ambariAdminConsole')
     return extractedData;
   });
   var $t = $translate.instant;
-  var Users = Restangular.all('users');
 
   return {
     list: function(params) {
       return $http.get(
         Settings.baseUrl + '/users/?'
         + 'Users/user_name.matches(.*'+params.searchString+'.*)'
-        + '&fields=*'
+        + '&fields=privileges/PrivilegeInfo/*,Users'
         + '&from=' + (params.currentPage-1)*params.usersPerPage
         + '&page_size=' + params.usersPerPage
         + (params.user_type === '*' ? '' : '&Users/user_type=' + params.user_type)
@@ -53,6 +52,12 @@ angular.module('ambariAdminConsole')
         + '&from=0&page_size=20'
       );
     },
+    getWithRoles: function(userId) {
+      return $http.get(
+        Settings.baseUrl + '/users/' + userId
+        + '?fields=privileges/PrivilegeInfo,Users'
+      );
+    },
     get: function(userId) {
       return Restangular.one('users', userId).get();
     },
@@ -94,9 +99,14 @@ angular.module('ambariAdminConsole')
      * @returns {Object}
      */
     makeUser: function(user) {
-      user.Users.encoded_name = encodeURIComponent(user.Users.user_name);
+      user.Users.encodedName = encodeURIComponent(user.Users.user_name);
       user.Users.userTypeName = $t(UserConstants.TYPES[user.Users.user_type].LABEL_KEY);
-      user.Users.ldap_user = user.Users.user_type === UserConstants.TYPES.LDAP.VALUE;
+      user.Users.ldapUser = user.Users.user_type === UserConstants.TYPES.LDAP.VALUE;
+      user.Users.roles = Cluster.sortRoles(user.privileges.filter(function(item) {
+        return item.PrivilegeInfo.type === 'CLUSTER' || item.PrivilegeInfo.type === 'AMBARI';
+      }).map(function(item) {
+        return item.PrivilegeInfo;
+      }));
 
       return user;
     }

+ 5 - 35
ambari-admin/src/main/resources/ui/admin-web/app/scripts/services/View.js

@@ -61,32 +61,6 @@ angular.module('ambariAdminConsole')
     angular.element(this,item);
   }
 
-  ViewUrl.all = function(params) {
-    var deferred = $q.defer();
-
-    $http({
-      method: 'GET',
-      dataType: "json",
-      url: Settings.baseUrl + '/view/urls?'
-      + 'ViewUrlInfo/url_name.matches(.*'+params.searchString+'.*)'
-      + '&ViewUrlInfo/url_suffix.matches(.*'+params.suffixSearch+'.*)'
-      + '&fields=*'
-      + '&from=' + (params.currentPage-1)*params.urlsPerPage
-      + '&page_size=' + params.urlsPerPage
-      + (params.instanceType === '*' ? '' : '&ViewUrlInfo/view_instance_common_name=' + params.instanceType)
-
-    })
-        .success(function(data) {
-          deferred.resolve(new ViewUrl(data));
-        })
-        .error(function(data) {
-          deferred.reject(data);
-        });
-
-    return deferred.promise;
-  };
-
-
   ViewUrl.updateShortUrl = function(payload){
     var deferred = $q.defer();
 
@@ -176,7 +150,7 @@ angular.module('ambariAdminConsole')
     var versions = {};
     angular.forEach(item.versions, function(version) {
       versions[version.ViewVersionInfo.version] = {count: version.instances.length, status: version.ViewVersionInfo.status};
-      if(version.ViewVersionInfo.status === 'DEPLOYED'){ // if atelast one version is deployed
+      if (version.ViewVersionInfo.status === 'DEPLOYED'){ // if at least one version is deployed
         self.canCreateInstance = true;
       }
 
@@ -203,10 +177,6 @@ angular.module('ambariAdminConsole')
     return ViewInstance.find(viewName, version, instanceName);
   };
 
-  View.allUrls =  function(req){
-    return ViewUrl.all(req)
-  };
-
   View.getUrlInfo = function(urlName){
     return ViewUrl.urlInfo(urlName);
   };
@@ -316,10 +286,10 @@ angular.module('ambariAdminConsole')
         description: instanceInfo.description
       };
 
-    angular.forEach(instanceInfo.properties, function(property) {
-      if(property.clusterConfig) {
+    angular.forEach(instanceInfo.properties, function (property) {
+      if (property.clusterConfig) {
         properties[property.name] = property.value
-      }else {
+      } else {
         settings[property.name] = property.value
       }
     });
@@ -327,7 +297,7 @@ angular.module('ambariAdminConsole')
     data.properties = settings;
     data.cluster_type = instanceInfo.clusterType;
 
-    if(instanceInfo.clusterId != null) {
+    if (instanceInfo.clusterId != null) {
       data.cluster_handle = instanceInfo.clusterId;
     } else {
       angular.extend(data.properties, properties);

+ 269 - 0
ambari-admin/src/main/resources/ui/admin-web/app/scripts/theme/bootstrap-ambari.js

@@ -0,0 +1,269 @@
+/**
+ * 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.
+ */
+
+'use strict';
+
+$(document).ready(function () {
+  var $accordionToggler = $(this).find('[data-toggle="collapseAccordion"]');
+  $accordionToggler.off('click').on('click', function (event) {
+    var $this = $(this);
+    $this.siblings('.panel-body').slideToggle(500);
+    $this.children().children('.panel-toggle').toggleClass('fa-angle-down fa-angle-up');
+    event.stopPropagation();
+    return false;
+  });
+});
+'use strict';
+
+(function ($) {
+
+  /**
+   * jQuery plugin for navigation bars
+   * Usage:
+   * <pre>
+   *   $('.navigation-bar').navigationBar();
+   * </pre>
+   *
+   * @param {object} options see <code>$.fn.navigationBar.defaults</code>
+   * @returns {$}
+   */
+
+  $.fn.navigationBar = function (options) {
+
+    var settings = $.extend({}, $.fn.navigationBar.defaults, options);
+
+    return this.each(function () {
+      var _this = this;
+
+      var containerSelector = '.navigation-bar-container';
+      var $navigationContainer = $(this).find(containerSelector);
+      var $sideNavToggler = $(this).find('[data-toggle=' + settings.navBarToggleDataAttr + ']');
+      var $subMenuToggler = $(this).find('[data-toggle=' + settings.subMenuNavToggleDataAttr + ']');
+      var firstLvlMenuItemsSelector = '.side-nav-menu>li';
+      var secondLvlMenuItemsSelector = '.side-nav-menu>li>ul>li';
+      var $moreActions = $(this).find('.more-actions');
+      var $dropdownMenu = $moreActions.children('.dropdown-menu');
+
+      $subMenuToggler.each(function (index, toggler) {
+        return $(toggler).parent().addClass('has-sub-menu');
+      });
+
+      if (settings.fitHeight) {
+        $(this).addClass('navigation-bar-fit-height');
+
+        // make scrolling effect on side nav ONLY, i.e. not effected on ambari main contents
+        $(this).find('.side-nav-menu').on('DOMMouseScroll mousewheel', function (ev) {
+          var $this = $(this),
+              scrollTop = this.scrollTop,
+              scrollHeight = this.scrollHeight,
+              height = $this.innerHeight(),
+              delta = ev.originalEvent.wheelDelta,
+              up = delta > 0;
+          var prevent = function prevent() {
+            ev.stopPropagation();
+            ev.preventDefault();
+            ev.returnValue = false;
+            return false;
+          };
+
+          if (!up && -delta > scrollHeight - height - scrollTop) {
+            // Scrolling down, but this will take us past the bottom.
+            $this.scrollTop(scrollHeight);
+            return prevent();
+          } else if (up && delta > scrollTop) {
+            // Scrolling up, but this will take us past the top.
+            $this.scrollTop(0);
+            return prevent();
+          }
+        });
+      }
+
+      //set main content left margin based on the width of side-nav
+      var containerWidth = $navigationContainer.width();
+      if (settings.moveLeftContent) {
+        $(settings.content).css('margin-left', containerWidth);
+      }
+      if (settings.moveLeftFooter) {
+        $(settings.footer).css('margin-left', containerWidth);
+      }
+
+      function popStateHandler() {
+        var path = window.location.pathname + window.location.hash;
+        $navigationContainer.find('li a').each(function (index, link) {
+          var $link = $(link);
+          var href = $link.attr('data-href') || $link.attr('href');
+          if (path.indexOf(href) !== -1 && ['', '#'].indexOf(href) === -1) {
+            $link.parent().addClass('active');
+          } else {
+            $link.parent().removeClass('active');
+          }
+        });
+      }
+
+      if (settings.handlePopState) {
+        popStateHandler();
+        $(window).bind('popstate', popStateHandler);
+      }
+
+      function clickHandler(el) {
+        var $li = $(el).parent();
+        var activeClass = settings.activeClass;
+
+        var activeMenuItems = firstLvlMenuItemsSelector + '.' + activeClass;
+        var activeSubMenuItems = secondLvlMenuItemsSelector + '.' + activeClass;
+        $navigationContainer.find(activeMenuItems).removeClass(activeClass);
+        $navigationContainer.find(activeSubMenuItems).removeClass(activeClass);
+        $li.addClass(activeClass);
+      }
+
+      /**
+       * Click on menu item
+       */
+      $(firstLvlMenuItemsSelector + '>a').on('click', function () {
+        clickHandler(this);
+      });
+
+      /**
+       * Click on sub menu item
+       */
+      $(secondLvlMenuItemsSelector + '>a').on('click', function () {
+        clickHandler(this);
+        $(this).parent().parent().parent().addClass(settings.activeClass);
+      });
+
+      /**
+       * Slider for sub menu
+       */
+      $subMenuToggler.off('click').on('click', function (event) {
+        // ignore click if navigation-bar is collapsed
+        if ($navigationContainer.hasClass('collapsed')) {
+          return false;
+        }
+        var $this = $(this);
+        $this.siblings('.sub-menu').slideToggle(600, function () {
+          var $topMenuItem = $this.parent();
+          var $subMenu = $topMenuItem.find('ul');
+          return $subMenu.is(':visible') ? $topMenuItem.removeClass('collapsed') : $topMenuItem.addClass('collapsed');
+        });
+        $this.children('.toggle-icon').toggleClass(settings.menuLeftClass + ' ' + settings.menuDownClass);
+        event.stopPropagation();
+        return false;
+      });
+
+      if (settings.fitHeight) {
+        $moreActions.on('click', function () {
+          // set actions submenu position
+          var $moreIcon = $(this);
+          var $header = $('.side-nav-header');
+          $dropdownMenu.css({
+            top: $moreIcon.offset().top - $header.offset().top + 20 + 'px',
+            left: $moreIcon.offset().left + 'px'
+          });
+        });
+      }
+      $dropdownMenu.on('click', function () {
+        // some action was triggered, should hide this icon
+        var moreIcon = $(this).parent();
+        setTimeout(function () {
+          moreIcon.hide();
+        }, 1000);
+      });
+      $navigationContainer.children('.side-nav-menu').scroll(function () {
+        $moreActions.removeClass('open');
+      });
+
+      /**
+       * Expand/collapse navigation bar
+       */
+      $sideNavToggler.click(function () {
+
+        $navigationContainer.toggleClass('collapsed').promise().done(function () {
+          var subMenuSelector = 'ul.sub-menu';
+          var $subMenus = $navigationContainer.find(subMenuSelector);
+          var $subMenuItems = $navigationContainer.find('.side-nav-menu>li');
+          if ($navigationContainer.hasClass('collapsed')) {
+            // set sub menu invisible when collapsed
+            $subMenus.hide();
+            $moreActions.hide();
+            // set the hover effect when collapsed, should show sub-menu on hovering
+            $subMenuItems.hover(function () {
+              $(this).find(subMenuSelector).show();
+              // set sub-menu position
+              var $parent = $(this);
+              var $header = $('.side-nav-header');
+              if (settings.fitHeight) {
+                $(this).find(subMenuSelector).css({
+                  position: 'fixed',
+                  top: $parent.offset().top - $header.offset().top + 'px',
+                  left: 50 + 'px'
+                });
+              }
+            }, function () {
+              $(this).find(subMenuSelector).hide();
+            });
+          } else {
+            // keep showing all sub menu
+            $subMenus.show().each(function (index, item) {
+              return $(item).parent().removeClass('collapsed');
+            });
+            $subMenuItems.unbind('mouseenter mouseleave');
+            $navigationContainer.find('.toggle-icon').removeClass(settings.menuLeftClass).addClass(settings.menuDownClass);
+            $moreActions.show();
+            // set sub-menu position
+            if (settings.fitHeight) {
+              $(_this).find(subMenuSelector).css({
+                position: 'relative',
+                top: 0,
+                left: 0
+              });
+            }
+          }
+
+          $navigationContainer.on('transitionend', function () {
+            //set main content left margin based on the width of side-nav
+            var containerWidth = $navigationContainer.width();
+            if (settings.moveLeftContent) {
+              $(settings.content).css('margin-left', containerWidth);
+            }
+            if (settings.moveLeftFooter) {
+              $(settings.footer).css('margin-left', containerWidth);
+            }
+          });
+          $sideNavToggler.find('span').toggleClass(settings.collapseNavBarClass + ' ' + settings.expandNavBarClass);
+        });
+        return false;
+      });
+    });
+  };
+
+  $.fn.navigationBar.defaults = {
+    handlePopState: true,
+    fitHeight: false,
+    content: '#main',
+    footer: 'footer',
+    moveLeftContent: true,
+    moveLeftFooter: true,
+    menuLeftClass: 'glyphicon-menu-right',
+    menuDownClass: 'glyphicon-menu-down',
+    collapseNavBarClass: 'fa-angle-double-left',
+    expandNavBarClass: 'fa-angle-double-right',
+    activeClass: 'active',
+    navBarToggleDataAttr: 'collapse-side-nav',
+    subMenuNavToggleDataAttr: 'collapse-sub-menu'
+  };
+})(jQuery);

+ 58 - 0
ambari-admin/src/main/resources/ui/admin-web/app/styles/cluster-information.css

@@ -0,0 +1,58 @@
+/**
+ * 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.
+ */
+
+#cluster-information .cluster-name label {
+  font-weight: normal;
+}
+
+#cluster-information .dev-blueprint {
+  line-height: 35px;
+}
+
+#cluster-information .dev-blueprint span {
+  vertical-align: text-top;
+}
+
+#cluster-information .cluster-name input {
+  width: 75%;
+}
+
+#cluster-information .cluster-name button {
+  margin-top: -34px;
+}
+
+#cluster-information .cluster-name input.edited {
+  background-color: #fdfbdd;
+}
+
+#cluster-information .welcome-header {
+  margin: -15px;
+  padding: 15px 15px 40px 15px;
+  background-color: #f0f0f0;
+  text-align: center;
+}
+
+#cluster-information .create-cluster-section {
+  text-align: center;
+  padding: 30px;
+}
+
+#cluster-information .fa-cloud {
+  font-size: 150px;
+  color: #f0f0f0;
+}

+ 77 - 619
ambari-admin/src/main/resources/ui/admin-web/app/styles/main.css

@@ -123,14 +123,6 @@
   transition: none;
 }
 
-.cluster-installation-progress-label{
-  display: block;
-  color: #888;
-  text-align: center;
-  padding: 10px 0;
-  cursor: default;
-}
-
 .add-item-input span{
   display: block;
   outline: none;
@@ -236,96 +228,6 @@
 .paginator{
   margin: 0;
 }
-.mainpage .panel-body{
-  padding: 20px;
-  height: 620px;
-}
-.mainpage h1{
-  font-size: 24px;
-  margin-top: 10px;
-}
-.mainpage .panel-body #main-operations-boxes {
-  padding: 10px;
-}
-.mainpage .panel-body #main-operations-boxes .thumbnail{
-  display: block;
-  height: 230px;
-  padding: 8px;
-  background-color: #eeeeee;
-  margin-bottom: 20px;
-  margin-left: 20px;
-  margin-right: 10px;
-  border: none;
-  border-radius: 0;
-}
-.mainpage .panel-body #main-operations-boxes .thumbnail .title,
-.mainpage .panel-body #main-operations-boxes .thumbnail .description,
-.mainpage .panel-body #main-operations-boxes .thumbnail .buttons {
-  text-align: center;
-  line-height: 1.5;
-}
-.mainpage .panel-body #main-operations-boxes .thumbnail .buttons .btn{
-  width: 200px;
-  margin: 5px;
-}
-.mainpage .panel-body #main-operations-boxes .thumbnail .buttons .btn.userslist-button,
-.mainpage .panel-body #main-operations-boxes .thumbnail .buttons .btn.groupslist-button {
-  width: 100px;
-}
-.mainpage .panel-body #main-operations-boxes .thumbnail .glyphicon {
-  font-size: 50px;
-  text-align: center;
-  display: block;
-  line-height: 1.5;
-}
-.mainpage .panel-body #main-operations-boxes .col-sm-5 {
-  width: 43.5%;
-}
-
-.views-list-table .panel{
-  border-radius: 0;
-  border: none;
-  margin-top: 0;
-}
-.views-list-table h4{
-  font-size: 14px;
-}
-.views-list-table .panel-group .panel + .panel{
-  margin-top: 0;
-}
-.views-list-table .panel-group .panel .panel-heading{
-  border-radius: 0;
-  border-top: 1px solid #ddd;
-}
-.views-list-table .panel-group .panel .panel-heading{
-  background: #f9f9f9;
-}
-.views-list-table .panel-group .panel:nth-child(even) .panel-heading{
-  background: none;
-}
-.views-list-table .panel-group .panel .panel-heading .panel-title{
-  font-size: 14px;
-  font-weight: normal;
-  cursor: pointer;
-}
-.views-list-table .panel-group .panel .panel-body{
-  padding-top: 0;
-  padding-bottom: 0;
-}
-.views-list-table .panel-group .panel .panel-body table tr:first-child td{
-  border-top: none;
-}
-.views-list-table .glyphicon.glyphicon-chevron-right{
-  -webkit-transition: all 0.3s;
-  -o-transition: all 0.3s;
-  transition: all 0.3s;
-}
-.views-list-table .glyphicon.glyphicon-chevron-right.opened{
-  -webkit-transform: rotateZ(90deg);
-  -ms-transform: rotateZ(90deg);
-  -o-transform: rotateZ(90deg);
-  transform: rotateZ(90deg);
-}
 
 a.gotoinstance{
   font-size: 12px;
@@ -345,6 +247,9 @@ a.gotoinstance{
 .hide-soft{
   display: none;
 }
+.nowrap {
+  white-space: nowrap;
+}
 .visible{
   display: block;
 }
@@ -367,10 +272,6 @@ a.gotoinstance{
   width: 14px;
 }
 
-.namefilter {
-  font-weight: normal;
-}
-
 .settings-edit-toggle.disabled, .properties-toggle.disabled{
   color: #999;
   cursor: not-allowed;
@@ -411,84 +312,6 @@ a.gotoinstance{
   font-size: 16px;
 }
 
-.user-edit-panel .ats-switch span.switch-right , .create-user-form .ats-switch span.switch-right, .enable-ldap .ats-switch span.switch-right {
-  background-color: #da4f49;
-  color: white;
-}
-/*
-  Style topnav menu
-*/
-.navbar-views-dropdown > a{
-  color: #c3c3c3;
-  font-size: 1.3em;
-  padding: 10px 25px 18px;
-  display: block;
-  box-shadow: none!important;
-  background: none!important;
-  text-decoration: none;
-}
-.navbar-views-dropdown > a:hover{
-  color: #fff;
-}
-.navbar-views-dropdown > a > i{
-  display: block;
-  margin-top: 1px;
-  margin-bottom: -12px;
-}
-.navbar-views-dropdown .dropdown-menu, .verison-label-row .dropdown-menu {
-  margin-top: -2px;
-}
-
-.navbar-views-dropdown .dropdown-menu a:hover{
-  background: #666;
-  color: #fff;
-}
-.navbar-views-dropdown .dropdown-menu .disabled a:hover{
-  background: none;
-  color: #999;
-}
-#top-nav .navbar.navbar-static-top{
-  min-height: 40px;
-}
-#top-nav .navbar-inverse{
-  background: none;
-  border: none;
-}
-#top-nav .navbar.navbar-static-top .navbar-inner {
-  background-color: #313d54;
-  -webkit-box-shadow: inset 0 0 0 rgba(0, 0, 0, 0.1), 0 1px 10px rgba(0, 0, 0, 0.1);
-  -moz-box-shadow: inset 0 0 0 rgba(0, 0, 0, 0.1), 0 1px 10px rgba(0, 0, 0, 0.1);
-  box-shadow: inset 0 0 0 rgba(0, 0, 0, 0.1), 0 1px 10px rgba(0, 0, 0, 0.1);
-  max-height: 40px;
-  height: 40px;
-}
-#top-nav .dropdown-toggle.navbar-btn{
-  margin: 4px 0 0 0;
-}
-#top-nav .navbar.navbar-static-top .logo {
-  float: left;
-  padding-top: 2px;
-}
-#top-nav .navbar.navbar-static-top .logo img {
-  height: 32px;
-}
-#top-nav .navbar.navbar-static-top .brand {
-  color: #ffffff;
-  font-size: 16px;
-  font-weight: normal;
-  line-height: 32px;
-  margin-left: 0;
-  padding: 2px 5px 0 10px;
-  text-shadow: 0 1px 0 #555555;
-  display: block;
-  float: left;
-  text-decoration: none;
-
-}
-#top-nav .navbar.navbar-static-top .brand.cluster-name{
-  margin-left: 10px;
-}
-
 .create-view-form, .register-version-form, .edit-version-form {
   padding-bottom: 50px;
 }
@@ -553,48 +376,13 @@ a.gotoinstance{
 .search-container{
   position: relative;
 }
-.search-container .close{
+.search-container .close {
   position: absolute;
   right: 10px;
-  top: 32px;
-}
-.groups-pane .search-container .close{
-  top: 32px;
+  top: 8px;
 }
-.views-urls-table .search-container .close{
-  top: 7px;
-  right: 10px;
-  z-index: 10;
-}
-
-.views-list-table .search-container .close{
-  right: 50px;
-  top: 7px;
-  z-index: 10;
-}
-.groups-pane table thead th{
-  border-top: 0;
-}
-.groups-pane table thead tr:first-child th{
-  border: 0;
-}
-
-.container{
-  padding-left: 0;
-  width: 940px;
-}
-
-
-@media (min-width: 1200px) {
-  .container, .navbar-static-top .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container{
-    width: 1130px;
-  }
-  .container{
-    width: 1170px;
-  }
-  .mainpage .panel-body #main-operations-boxes .col-sm-5 {
-    width: 44%;
-  }
+.search-container input {
+  font-weight: normal;
 }
 
 ul.nav li > a{
@@ -654,21 +442,14 @@ table.no-border tr td{
 .no-border{
   border: none !important;
 }
-.top-margin-4{
-  margin-top: 4px;
-}
+
 .table > thead > tr > th.vertical-top{
   vertical-align: top;
 }
 
-.groups-pane table ul{
-  list-style-type: none;
-  margin: 0;
-  padding: 0;
-}
-.groups-pane table ul li {
-  margin: 0;
-  padding: 0;
+.table td > .checkbox {
+  margin-bottom: 0;
+  margin-top: 0;
 }
 
 .property-form label{
@@ -701,318 +482,6 @@ table.no-border tr td{
 /*.login-message-pane .well {height: 74px;}
 .login-message-pane input {margin-left: 3px;}*/
 
-
-.btn {
-  display: inline-block;
-  *display: inline;
-  padding: 4px 14px;
-  margin-bottom: 0;
-  *margin-left: .3em;
-  font-size: 14px;
-  line-height: 20px;
-  *line-height: 20px;
-  color: #333333;
-  text-align: center;
-  text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75);
-  vertical-align: middle;
-  cursor: pointer;
-  background-color: #f5f5f5;
-  *background-color: #e6e6e6;
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6));
-  background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6);
-  background-image: -o-linear-gradient(top, #ffffff, #e6e6e6);
-  background-image: linear-gradient(to bottom, #ffffff, #e6e6e6);
-  background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6);
-  background-repeat: repeat-x;
-  border: 1px solid #bbbbbb;
-  *border: 0;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  border-color: #e6e6e6 #e6e6e6 #bfbfbf;
-  border-bottom-color: #a2a2a2;
-  -webkit-border-radius: 4px;
-     -moz-border-radius: 4px;
-          border-radius: 4px;
-  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0);
-  filter: progid:dximagetransform.microsoft.gradient(enabled=false);
-  *zoom: 1;
-  -webkit-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-     -moz-box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-          box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.2), 0 1px 2px rgba(0, 0, 0, 0.05);
-}
-
-.btn:hover,
-.btn:active,
-.btn.active,
-.btn.disabled,
-.btn[disabled] {
-  color: #333333;
-  background-color: #e6e6e6;
-  *background-color: #d9d9d9;
-}
-
-.btn:active,
-.btn.active {
-  background-color: #cccccc \9;
-}
-
-.btn:first-child {
-  *margin-left: 0;
-}
-
-.btn:hover {
-  color: #333333;
-  text-decoration: none;
-  background-color: #e6e6e6;
-  *background-color: #d9d9d9;
-  /* Buttons in IE7 don't get borders, so darken on hover */
-
-  background-position: 0 -15px;
-  -webkit-transition: background-position 0.1s linear;
-     -moz-transition: background-position 0.1s linear;
-       -o-transition: background-position 0.1s linear;
-          transition: background-position 0.1s linear;
-}
-
-.btn:focus {
-  outline: thin dotted #333;
-  outline: 5px auto -webkit-focus-ring-color;
-  outline-offset: -2px;
-}
-
-.btn.active,
-.btn:active {
-  background-color: #e6e6e6;
-  background-color: #d9d9d9 \9;
-  background-image: none;
-  outline: 0;
-  -webkit-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-     -moz-box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-          box-shadow: inset 0 2px 4px rgba(0, 0, 0, 0.15), 0 1px 2px rgba(0, 0, 0, 0.05);
-}
-
-.btn.disabled,
-.btn[disabled] {
-  cursor: default;
-  background-color: #e6e6e6;
-  background-image: none;
-  opacity: 0.65;
-  filter: alpha(opacity=65);
-  -webkit-box-shadow: none;
-     -moz-box-shadow: none;
-          box-shadow: none;
-}
-
-
-
-.btn-primary.active,
-.btn-warning.active,
-.btn-danger.active,
-.btn-success.active,
-.btn-info.active,
-.btn-inverse.active {
-  color: rgba(255, 255, 255, 0.75);
-}
-
-.btn {
-  border-color: #c5c5c5;
-  border-color: rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.15) rgba(0, 0, 0, 0.25);
-}
-
-.btn-primary {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #006dcc;
-  *background-color: #0044cc;
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc));
-  background-image: -webkit-linear-gradient(top, #0088cc, #0044cc);
-  background-image: -o-linear-gradient(top, #0088cc, #0044cc);
-  background-image: linear-gradient(to bottom, #0088cc, #0044cc);
-  background-image: -moz-linear-gradient(top, #0088cc, #0044cc);
-  background-repeat: repeat-x;
-  border-color: #0044cc #0044cc #002a80;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0);
-  filter: progid:dximagetransform.microsoft.gradient(enabled=false);
-}
-
-.btn-primary:hover,
-.btn-primary:active,
-.btn-primary.active,
-.btn-primary.disabled,
-.btn-primary[disabled],
-.btn-primary.disabled:hover,
-.btn-primary[disabled]:hover
- {
-  color: #ffffff;
-  background-color: #0044cc;
-  *background-color: #003bb3;
-}
-
-.btn-primary:active,
-.btn-primary.active {
-  background-color: #003399 \9;
-}
-
-.btn-warning {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #faa732;
-  *background-color: #f89406;
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406));
-  background-image: -webkit-linear-gradient(top, #fbb450, #f89406);
-  background-image: -o-linear-gradient(top, #fbb450, #f89406);
-  background-image: linear-gradient(to bottom, #fbb450, #f89406);
-  background-image: -moz-linear-gradient(top, #fbb450, #f89406);
-  background-repeat: repeat-x;
-  border-color: #f89406 #f89406 #ad6704;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0);
-  filter: progid:dximagetransform.microsoft.gradient(enabled=false);
-}
-
-.btn-warning:hover,
-.btn-warning:active,
-.btn-warning.active,
-.btn-warning.disabled,
-.btn-warning[disabled] {
-  color: #ffffff;
-  background-color: #f89406;
-  *background-color: #df8505;
-}
-
-.btn-warning:active,
-.btn-warning.active {
-  background-color: #c67605 \9;
-}
-
-.btn-danger {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #da4f49;
-  *background-color: #bd362f;
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f));
-  background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: -o-linear-gradient(top, #ee5f5b, #bd362f);
-  background-image: linear-gradient(to bottom, #ee5f5b, #bd362f);
-  background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f);
-  background-repeat: repeat-x;
-  border-color: #bd362f #bd362f #802420;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0);
-  filter: progid:dximagetransform.microsoft.gradient(enabled=false);
-}
-
-.btn-danger:hover,
-.btn-danger:active,
-.btn-danger.active,
-.btn-danger.disabled,
-.btn-danger[disabled] {
-  color: #ffffff;
-  background-color: #bd362f;
-  *background-color: #a9302a;
-}
-
-.btn-danger:active,
-.btn-danger.active {
-  background-color: #942a25 \9;
-}
-
-.btn-success {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #5bb75b;
-  *background-color: #51a351;
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351));
-  background-image: -webkit-linear-gradient(top, #62c462, #51a351);
-  background-image: -o-linear-gradient(top, #62c462, #51a351);
-  background-image: linear-gradient(to bottom, #62c462, #51a351);
-  background-image: -moz-linear-gradient(top, #62c462, #51a351);
-  background-repeat: repeat-x;
-  border-color: #51a351 #51a351 #387038;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0);
-  filter: progid:dximagetransform.microsoft.gradient(enabled=false);
-}
-
-.btn-success:hover,
-.btn-success:active,
-.btn-success.active,
-.btn-success.disabled,
-.btn-success[disabled] {
-  color: #ffffff;
-  background-color: #51a351;
-  *background-color: #499249;
-}
-
-.btn-success:active,
-.btn-success.active {
-  background-color: #408140 \9;
-}
-
-.btn-info {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #49afcd;
-  *background-color: #2f96b4;
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4));
-  background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: -o-linear-gradient(top, #5bc0de, #2f96b4);
-  background-image: linear-gradient(to bottom, #5bc0de, #2f96b4);
-  background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4);
-  background-repeat: repeat-x;
-  border-color: #2f96b4 #2f96b4 #1f6377;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0);
-  filter: progid:dximagetransform.microsoft.gradient(enabled=false);
-}
-
-.btn-info:hover,
-.btn-info:active,
-.btn-info.active,
-.btn-info.disabled,
-.btn-info[disabled] {
-  color: #ffffff;
-  background-color: #2f96b4;
-  *background-color: #2a85a0;
-}
-
-.btn-info:active,
-.btn-info.active {
-  background-color: #24748c \9;
-}
-
-.btn-inverse {
-  color: #ffffff;
-  text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25);
-  background-color: #363636;
-  *background-color: #222222;
-  background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222));
-  background-image: -webkit-linear-gradient(top, #444444, #222222);
-  background-image: -o-linear-gradient(top, #444444, #222222);
-  background-image: linear-gradient(to bottom, #444444, #222222);
-  background-image: -moz-linear-gradient(top, #444444, #222222);
-  background-repeat: repeat-x;
-  border-color: #222222 #222222 #000000;
-  border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25);
-  filter: progid:dximagetransform.microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0);
-  filter: progid:dximagetransform.microsoft.gradient(enabled=false);
-}
-
-.btn-inverse:hover,
-.btn-inverse:active,
-.btn-inverse.active,
-.btn-inverse.disabled,
-.btn-inverse[disabled] {
-  color: #ffffff;
-  background-color: #222222;
-  *background-color: #151515;
-}
-
-.btn-inverse:active,
-.btn-inverse.active {
-  background-color: #080808 \9;
-}
-
 button.btn,
 input[type="submit"].btn {
   *padding-top: 3px;
@@ -1048,6 +517,15 @@ button.btn.btn-xs{
   font-size: 12px;
   line-height: 1.5;
   border-radius: 3px;
+  height: 24px;
+}
+
+a.btn-primary, a.btn-primary:focus {
+  color: #fff;
+}
+
+a.btn-default, a.btn-default:focus {
+  color: #666;
 }
 
 .clusterDisplayName {
@@ -1085,6 +563,12 @@ a.alert-link, a.alert-link:hover, a.alert-link:visited{
   color: #666;
 }
 
+.empty-table-alert {
+  background-color: #f0f0f0;
+  text-align: center;
+  text-transform: uppercase;
+}
+
 .alert-container {
   position: fixed;
   top: 50px;
@@ -1112,13 +596,13 @@ a.alert-link, a.alert-link:hover, a.alert-link:visited{
   box-sizing: border-box;
 }
 
-.fix-bottom{
+.fix-bottom th {
   border-bottom: none !important;;
   border-top: none !important;
   border-width: 0;
 }
 
-.fix-top{
+.fix-top th {
   border-top: none !important;
   border-width: 0;
 }
@@ -1160,7 +644,11 @@ a.alert-link, a.alert-link:hover, a.alert-link:visited{
   border-left: 3px solid #ef2427;
 }
 .ambariAlert.error .icon-box, .test-ldap-icon.fa-times-circle {
-  color: #ef2427;
+  color: #ef6162;
+}
+
+.error {
+  color: #ef6162;
 }
 
 .ambariAlert.success {
@@ -1201,73 +689,9 @@ a.alert-link, a.alert-link:hover, a.alert-link:visited{
   transition: none!important;
 }
 
-
-.viewstatus{
-  display: inline-block;
-}
-.viewstatus.pending{
-  width: 12px;
-  height: 12px;
-  border: 2px solid black;
-  border-radius: 50%;
-  vertical-align: middle;
-  position: relative;
-}
-
-.viewstatus.pending:before, .viewstatus.pending:after{
-  content: '';
-  position: absolute;
-  left: 4px;
-  top: 3px;
-  width: 5px;
-  height: 2px;
-  background: black;
-}
-.viewstatus.pending:after{
-  top: -3px;
-  left: 3px;
-  width: 2px;
-  height: 2px;
-  border-radius: 100%;
-}
-.viewstatus.pending:before{
-  -webkit-transform-origin: 0% 50%;
-  -moz-transform-origin: 0% 50%;
-  -ms-transform-origin: 0% 50%;
-  -o-transform-origin: 0% 50%;
-  transform-origin: 0% 50%;
-
-  animation: rotate 2.0s infinite linear;
-  -webkit-animation: rotate 2.0s infinite linear;
-}
-
 @-webkit-keyframes rotate { 100% { -webkit-transform: rotate(360deg) }}
 @keyframes rotate { 100% { transform: rotate(360deg); -webkit-transform: rotate(360deg) }}
 
-
-.viewstatus.deploying{
-  width: 17px;
-  height: 12px;
-  text-align: center;
-  vertical-align: middle;
-}
-.viewstatus.deploying > div{
-  background: black;
-  height: 100%;
-  width: 3px;
-  display: inline-block;
-  -webkit-animation: stretchdelay 1.2s infinite ease-in-out;
-  animation: stretchdelay 1.2s infinite ease-in-out;
-}
-.viewstatus.deploying .rect2 {
-  -webkit-animation-delay: -1.1s;
-  animation-delay: -1.1s;
-}
-.viewstatus.deploying .rect3 {
-  -webkit-animation-delay: -1.0s;
-  animation-delay: -1.0s;
-}
-
 @-webkit-keyframes stretchdelay {
   0%, 40%, 100% { -webkit-transform: scaleY(0.4) }
   20% { -webkit-transform: scaleY(1.0) }
@@ -1321,15 +745,6 @@ accordion .panel-group .panel{
   padding-left: 19px;
 }
 
-.repo-version-inline {
-  left: 11%;
-}
-
-.repo-version-inline .repo-version-label {
-  text-align: left;
-
-}
-
 .repo-version-inline .dot {
   padding-right: 15px;
 }
@@ -1664,6 +1079,7 @@ thead.view-permission-header > tr > th {
 }
 
 .register-version-form .details-panel .control-label {
+  line-height: 20px;
   text-align: left;
   padding: 7px 2px;
   font-weight: normal;
@@ -1872,4 +1288,46 @@ legend {
 .ellipsis-overflow {
   overflow: hidden;
   text-overflow: ellipsis;
-}
+}
+
+body {
+  height: 100%;
+  background-color: #f0f0f0;
+}
+
+#main {
+  transition: .5s ease;
+  overflow: visible;
+  min-width: 980px;
+}
+
+#side-nav .ambari-header-link:hover {
+  text-decoration: none;
+}
+
+.main-container {
+  background-color: #fff;
+  padding: 15px;
+}
+
+.navigation-bar-fit-height {
+  z-index: 1001;
+}
+
+.entity-actions a {
+  color: inherit;
+  font-size: 16px;
+  cursor: pointer;
+  padding: 0 5px;
+}
+
+td.entity-actions,
+th.entity-actions {
+  width: 10%;
+}
+
+.entity-actions a:hover,
+.entity-actions a:visited:hover,
+.entity-actions a:focus:hover {
+  text-decoration: none;
+}

+ 1518 - 0
ambari-admin/src/main/resources/ui/admin-web/app/styles/theme/bootstrap-ambari.css

@@ -0,0 +1,1518 @@
+/**
+ * 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.
+ */
+@font-face {
+  font-family: 'Roboto';
+  font-weight: normal;
+  font-style: normal;
+  src: url('fonts/Roboto-Regular-webfont.eot');
+  src: url('fonts/Roboto-Regular-webfont.eot?#iefix') format('embedded-opentype'), url('fonts/Roboto-Regular-webfont.woff') format('woff'), url('fonts/Roboto-Regular-webfont.ttf') format('truetype'), url('fonts/Roboto-Regular-webfont.svg#robotoregular') format('svg');
+}
+.font-mixin {
+  font-family: 'Roboto', sans-serif;
+  font-weight: normal;
+  font-style: normal;
+  line-height: 1;
+  color: #333;
+}
+.btn,
+.btn:focus {
+  outline: none;
+  font-family: 'Roboto', sans-serif;
+  text-transform: uppercase;
+  height: 34px;
+  font-size: 14px;
+  padding: 10px 20px;
+  line-height: 14px;
+}
+.btn .glyphicon,
+.btn:focus .glyphicon {
+  top: -1px;
+  float: left;
+}
+.box-shadow {
+  box-shadow: 0 0 2px 0 #1391c1;
+}
+.btn-disabled {
+  opacity: 0.6;
+  box-shadow: none;
+}
+.btn-default-disabled {
+  opacity: 0.6;
+  box-shadow: none;
+  color: #FFF;
+  background-color: #808793;
+  border: none;
+}
+.btn-default,
+.btn-default:focus {
+  color: #666;
+  background-color: #FFF;
+  border: 1px solid #CFD3D7;
+}
+.btn-default:hover,
+.btn-default:focus:hover {
+  color: #FFF;
+  background-color: #808793;
+}
+.btn-default:active,
+.btn-default:focus:active {
+  color: #666;
+  background-color: #FFF;
+  border: 1px solid #CFD3D7;
+  box-shadow: 0 0 2px 0 #1391c1;
+}
+.btn-default[disabled],
+.btn-default:focus[disabled],
+.btn-default.disabled,
+.btn-default:focus.disabled {
+  opacity: 0.6;
+  box-shadow: none;
+  color: #FFF;
+  background-color: #808793;
+  border: none;
+}
+.btn-default[disabled]:active,
+.btn-default:focus[disabled]:active,
+.btn-default.disabled:active,
+.btn-default:focus.disabled:active,
+.btn-default[disabled].active,
+.btn-default:focus[disabled].active,
+.btn-default.disabled.active,
+.btn-default:focus.disabled.active,
+.btn-default[disabled]:hover,
+.btn-default:focus[disabled]:hover,
+.btn-default.disabled:hover,
+.btn-default:focus.disabled:hover {
+  opacity: 0.6;
+  box-shadow: none;
+  color: #FFF;
+  background-color: #808793;
+  border: none;
+}
+.btn-primary-disabled {
+  opacity: 0.6;
+  box-shadow: none;
+  color: #D1E8D1;
+  background-color: #3FAE2A;
+  border: 1px solid #3FAE2A;
+}
+.btn-primary,
+.btn-primary:focus {
+  color: #FFF;
+  background-color: #3FAE2A;
+  border: 1px solid #3FAE2A;
+}
+.btn-primary:hover,
+.btn-primary:focus:hover {
+  color: #FFF;
+  background-color: #429929;
+  border: 1px solid #429929;
+}
+.btn-primary:active,
+.btn-primary:focus:active,
+.btn-primary.active,
+.btn-primary:focus.active {
+  color: #FFF;
+  background-color: #3FAE2A;
+  border: 1px solid #3FAE2A;
+  box-shadow: 0 0 2px 0 #1391c1;
+}
+.btn-primary[disabled],
+.btn-primary:focus[disabled],
+.btn-primary.disabled,
+.btn-primary:focus.disabled {
+  opacity: 0.6;
+  box-shadow: none;
+  color: #D1E8D1;
+  background-color: #3FAE2A;
+  border: 1px solid #3FAE2A;
+}
+.btn-primary[disabled]:active,
+.btn-primary:focus[disabled]:active,
+.btn-primary.disabled:active,
+.btn-primary:focus.disabled:active,
+.btn-primary[disabled].active,
+.btn-primary:focus[disabled].active,
+.btn-primary.disabled.active,
+.btn-primary:focus.disabled.active,
+.btn-primary[disabled]:hover,
+.btn-primary:focus[disabled]:hover,
+.btn-primary.disabled:hover,
+.btn-primary:focus.disabled:hover {
+  opacity: 0.6;
+  box-shadow: none;
+  color: #D1E8D1;
+  background-color: #3FAE2A;
+  border: 1px solid #3FAE2A;
+}
+.btn-secondary-disabled {
+  opacity: 0.6;
+  box-shadow: none;
+  color: #D1E8D1;
+  background-color: #429929;
+  border: 1px solid #3FAE2A;
+}
+.btn-secondary,
+.btn-secondary:focus {
+  color: #429929;
+  background-color: #FFF;
+  border: 1px solid #3FAE2A;
+}
+.btn-secondary:hover,
+.btn-secondary:focus:hover {
+  color: #FFF;
+  background-color: #429929;
+}
+.btn-secondary:active,
+.btn-secondary:focus:active {
+  color: #429929;
+  background-color: #FFF;
+  box-shadow: 0 0 2px 0 #1391c1;
+}
+.btn-secondary[disabled],
+.btn-secondary:focus[disabled],
+.btn-secondary.disabled,
+.btn-secondary:focus.disabled {
+  opacity: 0.6;
+  box-shadow: none;
+  color: #D1E8D1;
+  background-color: #429929;
+  border: 1px solid #3FAE2A;
+}
+.btn-secondary[disabled]:active,
+.btn-secondary:focus[disabled]:active,
+.btn-secondary.disabled:active,
+.btn-secondary:focus.disabled:active,
+.btn-secondary[disabled].active,
+.btn-secondary:focus[disabled].active,
+.btn-secondary.disabled.active,
+.btn-secondary:focus.disabled.active,
+.btn-secondary[disabled]:hover,
+.btn-secondary:focus[disabled]:hover,
+.btn-secondary.disabled:hover,
+.btn-secondary:focus.disabled:hover {
+  opacity: 0.6;
+  box-shadow: none;
+  color: #D1E8D1;
+  background-color: #429929;
+  border: 1px solid #3FAE2A;
+}
+.btn-success {
+  border: none;
+}
+.btn-regular-default-state {
+  background-color: #FFF;
+  color: #666;
+  border: 1px solid #cfd3d7;
+}
+.btn-primary-default-state {
+  background-color: #3FAE2A;
+  border: 1px solid #3FAE2A;
+  color: #FFF;
+}
+.btn-group.open .btn.dropdown-toggle,
+.dropdown.open .btn.dropdown-toggle {
+  box-shadow: inset 0px 0px 3px 0px #1391c1;
+}
+.btn-group.open .btn.dropdown-toggle,
+.dropdown.open .btn.dropdown-toggle,
+.btn-group.open .btn.dropdown-toggle.btn-default,
+.dropdown.open .btn.dropdown-toggle.btn-default {
+  background-color: #FFF;
+  color: #666;
+  border: 1px solid #cfd3d7;
+}
+.btn-group.open .btn.dropdown-toggle:hover,
+.dropdown.open .btn.dropdown-toggle:hover,
+.btn-group.open .btn.dropdown-toggle.btn-default:hover,
+.dropdown.open .btn.dropdown-toggle.btn-default:hover {
+  background-color: #FFF;
+  color: #666;
+  border: 1px solid #cfd3d7;
+}
+.btn-group.open .btn.dropdown-toggle + .dropdown-menu > li > a:hover,
+.dropdown.open .btn.dropdown-toggle + .dropdown-menu > li > a:hover,
+.btn-group.open .btn.dropdown-toggle.btn-default + .dropdown-menu > li > a:hover,
+.dropdown.open .btn.dropdown-toggle.btn-default + .dropdown-menu > li > a:hover {
+  background-color: #808793;
+  color: #FFF;
+}
+.btn-group.open .btn.dropdown-toggle.btn-primary,
+.dropdown.open .btn.dropdown-toggle.btn-primary {
+  background-color: #3FAE2A;
+  border: 1px solid #3FAE2A;
+  color: #FFF;
+}
+.btn-group.open .btn.dropdown-toggle.btn-primary:hover,
+.dropdown.open .btn.dropdown-toggle.btn-primary:hover {
+  background-color: #3FAE2A;
+  border: 1px solid #3FAE2A;
+  color: #FFF;
+}
+.btn-group.open .btn.dropdown-toggle.btn-primary + .dropdown-menu > li > a:hover,
+.dropdown.open .btn.dropdown-toggle.btn-primary + .dropdown-menu > li > a:hover {
+  background-color: #429929;
+  color: #FFF;
+}
+.btn-group.open .dropdown-menu,
+.dropdown.open .dropdown-menu {
+  font-family: 'Roboto', sans-serif;
+  font-weight: normal;
+  font-style: normal;
+  line-height: 1;
+  color: #333;
+  border-radius: 2px;
+  font-size: 14px;
+  min-width: 200px;
+  background: #FFF;
+  color: #666;
+  border: 1px solid #cfd3d7;
+}
+.btn-group.open .dropdown-menu > li,
+.dropdown.open .dropdown-menu > li {
+  margin-bottom: 1px;
+}
+.btn-group.open .dropdown-menu > li > a,
+.dropdown.open .dropdown-menu > li > a {
+  height: 24px;
+}
+.btn-group .btn.dropdown-toggle:first-child,
+.dropdown .btn.dropdown-toggle:first-child {
+  min-width: 80px;
+}
+.btn-group .btn.dropdown-toggle.disabled,
+.dropdown .btn.dropdown-toggle.disabled,
+.btn-group .btn.dropdown-toggle[disabled],
+.dropdown .btn.dropdown-toggle[disabled] {
+  opacity: 0.6;
+}
+input.form-control {
+  font-size: 14px;
+  border-radius: 2px;
+  color: #666;
+  border: 1px solid #CFD3D7;
+  height: 34px;
+  padding: 10px;
+}
+input.form-control:focus {
+  border-color: #1291c1;
+  box-shadow: none;
+}
+.help-block {
+  color: #999999;
+  font-size: 14px;
+}
+.help-block.validation-block {
+  color: #999999;
+  margin-top: 10px;
+}
+.help-block.validation-block::before {
+  position: relative;
+  top: 2px;
+  margin-right: 5px;
+  font-family: 'Glyphicons Halflings';
+}
+.has-success input.form-control {
+  color: #666;
+  border: 1px solid #1EB475;
+}
+.has-success input.form-control:focus {
+  border-color: #1EB475;
+  box-shadow: none;
+}
+.has-success .help-block.validation-block::before {
+  content: '\e084';
+  color: #1EB475;
+}
+.has-error input.form-control {
+  color: #666;
+  border: 1px solid #EF6162;
+}
+.has-error input.form-control:focus {
+  border-color: #EF6162;
+  box-shadow: none;
+}
+.has-error .help-block.validation-block::before {
+  content: '\e083';
+  color: #EF6162;
+}
+.has-warning input.form-control {
+  color: #666;
+  border: 1px solid #E98A40;
+}
+.has-warning input.form-control:focus {
+  border-color: #E98A40;
+  box-shadow: none;
+}
+.has-warning .help-block.validation-block::before {
+  content: '\e101';
+  color: #E98A40;
+}
+.form-control[disabled],
+.form-control[readonly],
+fieldset[disabled] .form-control {
+  color: #999999;
+  border-color: #cccccc;
+  background-color: #dddddd;
+}
+h2.table-title {
+  font-family: 'Roboto', sans-serif;
+  font-weight: normal;
+  font-style: normal;
+  line-height: 1;
+  color: #333;
+  margin-top: 10px;
+  font-size: 20px;
+}
+.table {
+  color: #666;
+  font-size: 13px;
+}
+.table thead,
+.table tfoot {
+  color: #999;
+}
+.table input[type="checkbox"] + label {
+  position: relative;
+  line-height: 1.3em;
+  font-size: initial;
+  top: 4px;
+  margin-bottom: 0;
+}
+.table thead > tr > th {
+  border-bottom-color: #EEE;
+}
+.table tfoot > tr:first-of-type > td {
+  border-top-width: 2px;
+  border-top-color: #EEE;
+}
+.table > tbody > tr > td {
+  border-top-color: #EEE;
+}
+.table > tbody > tr.active {
+  background-color: #EEE;
+}
+.table > tbody > tr.active > td {
+  background-color: #EEE;
+}
+.table.table-hover .action {
+  visibility: hidden;
+  padding: 0;
+  line-height: 1;
+}
+.table.table-hover .action:hover {
+  text-decoration: none;
+}
+.table.table-hover > tbody > tr {
+  border-width: 0 1px 1px;
+  border-style: solid;
+  border-color: #EEE transparent;
+}
+.table.table-hover > tbody > tr > td {
+  border-width: 0;
+}
+.table.table-hover > tbody > tr:hover {
+  border-color: #A7DFF2;
+  background-color: #E7F6FC;
+}
+.table.table-hover > tbody > tr:hover > td {
+  border-top: 1px solid #A7DFF2;
+  background-color: #E7F6FC;
+}
+.table.table-hover > tbody > tr:hover > td .action {
+  visibility: visible;
+}
+.table.table-hover > tbody > tr:first-of-type > td {
+  border-top: 1px solid transparent;
+}
+.table.table-hover > tbody > tr:first-of-type:hover > td {
+  border-color: #A7DFF2;
+}
+.pagination-block .pagination-block-item {
+  float: left;
+  padding: 0 5px;
+}
+.pagination-block .pagination-block-item a,
+.pagination-block .pagination-block-item a:visited,
+.pagination-block .pagination-block-item a:focus {
+  text-decoration: none;
+}
+.pagination-block .pagination-block-item select {
+  border: none;
+  background-color: transparent;
+  color: #1491C1;
+}
+.nav.nav-tabs {
+  border: none;
+  margin-bottom: 20px;
+}
+.nav.nav-tabs li a {
+  border-width: 0;
+  border-radius: 0;
+  border-bottom: 3px solid transparent;
+  color: #6B6C6C;
+  text-transform: uppercase;
+}
+.nav.nav-tabs li a:hover,
+.nav.nav-tabs li a:active,
+.nav.nav-tabs li a:focus {
+  color: #333;
+  border-top-width: 0;
+  border-left-width: 0;
+  border-right-width: 0;
+  background: none;
+}
+.nav.nav-tabs li a .badge.badge-important {
+  display: inline;
+  vertical-align: baseline;
+}
+.nav.nav-tabs li.active a {
+  color: #333;
+  border-bottom: 3px solid #3FAE2A;
+  padding-bottom: 2px;
+}
+.nav-tabs-left li,
+.nav-tabs-right li {
+  float: none;
+  margin-bottom: 3px;
+}
+.nav-tabs-left li a,
+.nav-tabs-right li a {
+  margin-right: 0;
+}
+.nav-tabs-left li {
+  margin-right: -1px;
+}
+.nav-tabs-left li a {
+  border: 3px solid transparent !important;
+}
+.nav-tabs-left li.active a,
+.nav-tabs-left li.active a:hover,
+.nav-tabs-left li.active a:active,
+.nav-tabs-left li.active a:focus {
+  border-right: 3px solid #3FAE2A !important;
+}
+.nav-tabs-right li {
+  margin-left: -1px;
+}
+.nav-tabs-right li a {
+  border: 3px solid transparent !important;
+}
+.nav-tabs-right li.active a,
+.nav-tabs-right li.active a:hover,
+.nav-tabs-right li.active a:active,
+.nav-tabs-right li.active a:focus {
+  border-left: 3px solid #3FAE2A !important;
+}
+.wizard {
+  border: 2px solid #ebecf1;
+}
+.wizard .wizard-header h3 {
+  font-family: 'Roboto', sans-serif;
+  font-weight: normal;
+  font-style: normal;
+  line-height: 1;
+  font-size: 20px;
+  color: #333;
+  margin: 15px 20px;
+}
+.wizard .wizard-body {
+  overflow: hidden;
+  margin: 0;
+}
+.wizard .wizard-body .wizard-content {
+  background: #ebecf1;
+  padding-top: 25px;
+  float: left;
+  margin-bottom: -99999px;
+  padding-bottom: 99999px;
+}
+.wizard .wizard-body .wizard-content .step-title {
+  font-family: 'Roboto', sans-serif;
+  font-weight: normal;
+  font-style: normal;
+  line-height: 1;
+  color: #333;
+  font-weight: bold;
+  font-size: 18px;
+  color: #666;
+}
+.wizard .wizard-body .wizard-content .step-description {
+  font-family: 'Roboto', sans-serif;
+  font-weight: normal;
+  font-style: normal;
+  line-height: 1;
+  color: #333;
+  font-size: 14px;
+  line-height: 1.4;
+  color: #999;
+}
+.wizard .wizard-body .wizard-content .panel.panel-default {
+  border: none;
+  box-shadow: none;
+  margin-top: 20px;
+}
+.wizard .wizard-body .wizard-content .panel.panel-default .panel-body {
+  padding: 30px 20px;
+}
+.wizard .wizard-body .wizard-nav {
+  min-height: 550px;
+  padding-top: 25px;
+  background-color: #323544;
+  float: left;
+  margin-bottom: -99999px;
+  padding-bottom: 99999px;
+}
+.wizard .wizard-body .wizard-nav .nav li {
+  padding: 0px 15px;
+}
+.wizard .wizard-body .wizard-nav .nav li a {
+  height: 48px;
+  padding: 0px 5px;
+  display: table-cell;
+  vertical-align: middle;
+}
+.wizard .wizard-body .wizard-nav .nav li .step-marker {
+  position: absolute;
+  top: 9px;
+  line-height: 16px;
+  text-align: center;
+  width: 20px;
+  height: 20px;
+  border: 2px solid #1EB475;
+  border-radius: 50%;
+  font-size: 12px;
+  font-style: inherit;
+  color: #1EB475;
+  background-color: #323544;
+}
+.wizard .wizard-body .wizard-nav .nav li .step-name {
+  font-family: 'Roboto', sans-serif;
+  font-weight: normal;
+  font-style: normal;
+  line-height: 1;
+  color: #333;
+  font-size: 14px;
+  color: #999;
+  margin-left: 30px;
+}
+.wizard .wizard-body .wizard-nav .nav li .step-index {
+  line-height: 18px;
+}
+.wizard .wizard-body .wizard-nav .nav li .step-description {
+  font-family: 'Roboto', sans-serif;
+  font-weight: normal;
+  font-style: normal;
+  line-height: 1;
+  color: #333;
+  font-size: 12px;
+  color: #999;
+  margin-left: 30px;
+}
+.wizard .wizard-body .wizard-nav .nav li.completed .step-marker {
+  background-color: #1EB475;
+  color: white;
+  font-size: 10px;
+  padding-left: 2px;
+}
+.wizard .wizard-body .wizard-nav .nav li.completed .step-marker .step-index {
+  display: none;
+}
+.wizard .wizard-body .wizard-nav .nav li.completed .step-marker:after {
+  font-family: "Glyphicons Halflings";
+  content: "\e013";
+  position: relative;
+  top: 1px;
+  left: -1px;
+}
+.wizard .wizard-body .wizard-nav .nav li.completed:after {
+  width: 2px;
+  height: 100%;
+  position: absolute;
+  background-color: #1EB475;
+  content: "";
+  top: 25px;
+  left: 29px;
+}
+.wizard .wizard-body .wizard-nav .nav li.completed:last-child:after {
+  content: none;
+}
+.wizard .wizard-body .wizard-nav .nav li.active .step-name {
+  font-weight: bold;
+}
+.wizard .wizard-body .wizard-nav .nav li.disabled .step-marker {
+  color: #666;
+  border-color: #666;
+}
+.wizard .wizard-body .wizard-nav .nav li.disabled .step-name,
+.wizard .wizard-body .wizard-nav .nav li.disabled .step-description {
+  color: #666;
+}
+.wizard .wizard-body .wizard-nav .nav li.disabled.completed .step-marker {
+  background-color: #1EB475;
+  border: 2px solid #1EB475;
+  color: white;
+}
+.wizard .wizard-body .wizard-nav .nav-pills > li.active > a,
+.wizard .wizard-body .wizard-nav .nav-pills > li.active > a:focus,
+.wizard .wizard-body .wizard-nav .nav-pills > li.active > a:hover,
+.wizard .wizard-body .wizard-nav .nav > li > a:focus,
+.wizard .wizard-body .wizard-nav .nav > li > a:hover {
+  background-color: inherit;
+}
+.wizard .wizard-body .wizard-footer {
+  background: white;
+  padding: 15px 20px;
+}
+.wizard .wizard-body .wizard-footer button {
+  margin: 0 10px;
+}
+.checkbox-disabled-style {
+  background-color: #b2b8c1;
+  border-color: #b2b8c1;
+}
+input[type="checkbox"]:not(:checked),
+input[type="radio"]:not(:checked),
+input[type="checkbox"]:checked,
+input[type="radio"]:checked {
+  display: none;
+}
+input[type="checkbox"]:not(:checked) + label,
+input[type="radio"]:not(:checked) + label,
+input[type="checkbox"]:checked + label,
+input[type="radio"]:checked + label {
+  position: relative;
+  padding-left: 20px;
+}
+input[type="checkbox"]:not(:checked) + label:hover:before,
+input[type="radio"]:not(:checked) + label:hover:before,
+input[type="checkbox"]:checked + label:hover:before,
+input[type="radio"]:checked + label:hover:before {
+  border-color: #1491C1;
+  background-color: #1491C1;
+}
+input[type="checkbox"]:checked + label:before,
+input[type="radio"]:checked + label:before {
+  background-color: #1491C1;
+  border-color: #1491C1;
+}
+input[type="checkbox"][disabled] + label:before,
+input[type="radio"][disabled] + label:before,
+input[type="checkbox"].disabled + label:before,
+input[type="radio"].disabled + label:before,
+input[type="checkbox"][disabled] + label:hover:before,
+input[type="radio"][disabled] + label:hover:before,
+input[type="checkbox"].disabled + label:hover:before,
+input[type="radio"].disabled + label:hover:before {
+  background-color: #b2b8c1;
+  border-color: #b2b8c1;
+}
+input[type="checkbox"] + label:before {
+  content: '';
+  position: absolute;
+  left: 0;
+  top: 4px;
+  width: 10px;
+  height: 10px;
+  box-sizing: border-box;
+  border-radius: 2px;
+  border-width: 1px;
+  border-style: solid;
+  border-color: #ddd;
+}
+input[type="checkbox"]:checked + label:after {
+  content: '\2714';
+  color: #FFF;
+  position: absolute;
+  top: 0;
+  left: 2px;
+  font-size: 9px;
+}
+input[type="radio"] + label:before,
+input.radio + label:before {
+  content: '';
+  position: absolute;
+  left: 0;
+  top: 0;
+  width: 12px;
+  height: 12px;
+  box-sizing: border-box;
+  border-radius: 12px;
+  border-width: 1px;
+  border-style: solid;
+  border-color: #ddd;
+}
+input[type="radio"]:checked + label:after,
+input.radio:checked + label:after {
+  content: '';
+  background-color: #FFF;
+  position: absolute;
+  top: 3px;
+  left: 3px;
+  width: 6px;
+  height: 6px;
+  border-radius: 6px;
+}
+.navigation-bar-container {
+  height: auto;
+  width: 230px;
+  background-color: #323544;
+  padding: 0;
+  -ms-overflow-style: none;
+  transition: width 0.5s ease-out;
+  -webkit-font-smoothing: antialiased;
+}
+.navigation-bar-container ul.nav.side-nav-header {
+  width: 230px;
+  transition: width 0.5s ease-out;
+}
+.navigation-bar-container ul.nav.side-nav-header li.navigation-header {
+  background: #313d54;
+  padding: 15px 5px 15px 25px;
+  height: 55px;
+}
+.navigation-bar-container ul.nav.side-nav-header li.navigation-header > a.ambari-logo {
+  padding: 0;
+}
+.navigation-bar-container ul.nav.side-nav-header li.navigation-header > a.ambari-logo > img {
+  height: 25px;
+  float: left;
+  margin-left: -3px;
+}
+.navigation-bar-container ul.nav.side-nav-header li.navigation-header .btn-group {
+  cursor: pointer;
+  margin-top: 3px;
+}
+.navigation-bar-container ul.nav.side-nav-header li.navigation-header .btn-group:hover span.ambari-header {
+  color: #fff;
+}
+.navigation-bar-container ul.nav.side-nav-header li.navigation-header .btn-group span.ambari-header {
+  font-family: 'Roboto', sans-serif;
+  font-weight: normal;
+  font-style: normal;
+  line-height: 1;
+  color: #333;
+  font-size: 20px;
+  width: 55px;
+  display: inline;
+  color: #b8bec4;
+  padding: 0 8px 0 10px;
+}
+.navigation-bar-container ul.nav.side-nav-header li.navigation-header .btn-group span.toggle-icon {
+  margin-bottom: 5px;
+  font-size: 13px;
+  display: inline-block;
+  vertical-align: middle;
+  color: #43AD49;
+}
+.navigation-bar-container ul.nav.side-nav-header li.navigation-header .btn-group.open .dropdown-toggle {
+  -webkit-box-shadow: none;
+  box-shadow: none;
+}
+.navigation-bar-container ul.nav.side-nav-header li.navigation-header ul.dropdown-menu {
+  top: 30px;
+}
+.navigation-bar-container ul.nav.side-nav-header li.navigation-header ul.dropdown-menu li > a {
+  font-family: 'Roboto', sans-serif;
+  font-weight: normal;
+  font-style: normal;
+  line-height: 1;
+  color: #333;
+  font-size: 14px;
+  color: #666;
+  line-height: 1.42;
+  white-space: nowrap;
+  overflow: hidden;
+  text-overflow: ellipsis;
+}
+.navigation-bar-container ul.nav.side-nav-header li.navigation-header ul.dropdown-menu li > a:hover {
+  background: #f5f5f5;
+}
+.navigation-bar-container ul.nav.side-nav-menu,
+.navigation-bar-container ul.nav.side-nav-footer {
+  background-color: #323544;
+  width: 230px;
+  transition: width 0.5s ease-out;
+}
+.navigation-bar-container ul.nav.side-nav-menu li,
+.navigation-bar-container ul.nav.side-nav-footer li {
+  padding: 0;
+  margin: 0;
+}
+.navigation-bar-container ul.nav.side-nav-menu li.navigation-footer > a,
+.navigation-bar-container ul.nav.side-nav-footer li.navigation-footer > a,
+.navigation-bar-container ul.nav.side-nav-menu li.submenu-li > a,
+.navigation-bar-container ul.nav.side-nav-footer li.submenu-li > a,
+.navigation-bar-container ul.nav.side-nav-menu li.mainmenu-li > a,
+.navigation-bar-container ul.nav.side-nav-footer li.mainmenu-li > a {
+  display: table-cell;
+  vertical-align: middle;
+  width: 230px;
+  border-radius: 0;
+  -moz-border-radius: 0;
+  -webkit-border-radius: 0;
+  white-space: nowrap;
+}
+.navigation-bar-container ul.nav.side-nav-menu li.navigation-footer > a .navigation-menu-item,
+.navigation-bar-container ul.nav.side-nav-footer li.navigation-footer > a .navigation-menu-item,
+.navigation-bar-container ul.nav.side-nav-menu li.submenu-li > a .navigation-menu-item,
+.navigation-bar-container ul.nav.side-nav-footer li.submenu-li > a .navigation-menu-item,
+.navigation-bar-container ul.nav.side-nav-menu li.mainmenu-li > a .navigation-menu-item,
+.navigation-bar-container ul.nav.side-nav-footer li.mainmenu-li > a .navigation-menu-item {
+  font-family: 'Roboto', sans-serif;
+  font-weight: normal;
+  font-style: normal;
+  line-height: 1;
+  color: #333;
+  font-size: 14px;
+  color: #b8bec4;
+  padding-left: 8px;
+}
+.navigation-bar-container ul.nav.side-nav-menu li.navigation-footer > a .navigation-icon,
+.navigation-bar-container ul.nav.side-nav-footer li.navigation-footer > a .navigation-icon,
+.navigation-bar-container ul.nav.side-nav-menu li.submenu-li > a .navigation-icon,
+.navigation-bar-container ul.nav.side-nav-footer li.submenu-li > a .navigation-icon,
+.navigation-bar-container ul.nav.side-nav-menu li.mainmenu-li > a .navigation-icon,
+.navigation-bar-container ul.nav.side-nav-footer li.mainmenu-li > a .navigation-icon {
+  line-height: 18px;
+  font-size: 16px;
+  color: #b8bec4;
+}
+.navigation-bar-container ul.nav.side-nav-menu li.navigation-footer > a .toggle-icon,
+.navigation-bar-container ul.nav.side-nav-footer li.navigation-footer > a .toggle-icon,
+.navigation-bar-container ul.nav.side-nav-menu li.submenu-li > a .toggle-icon,
+.navigation-bar-container ul.nav.side-nav-footer li.submenu-li > a .toggle-icon,
+.navigation-bar-container ul.nav.side-nav-menu li.mainmenu-li > a .toggle-icon,
+.navigation-bar-container ul.nav.side-nav-footer li.mainmenu-li > a .toggle-icon {
+  line-height: 14px;
+  font-size: 14px;
+  color: #b8bec4;
+  padding: 3px 5px 3px 10px;
+}
+.navigation-bar-container ul.nav.side-nav-menu li.mainmenu-li > a,
+.navigation-bar-container ul.nav.side-nav-footer li.mainmenu-li > a {
+  padding: 10px 5px 10px 20px;
+}
+.navigation-bar-container ul.nav.side-nav-menu li.navigation-footer > a,
+.navigation-bar-container ul.nav.side-nav-footer li.navigation-footer > a {
+  padding: 14px 5px 14px 20px;
+}
+.navigation-bar-container ul.nav.side-nav-menu li.submenu-li > a,
+.navigation-bar-container ul.nav.side-nav-footer li.submenu-li > a {
+  padding: 10px 5px 10px 25px;
+}
+.navigation-bar-container ul.nav.side-nav-menu li.navigation-footer,
+.navigation-bar-container ul.nav.side-nav-footer li.navigation-footer {
+  background: #313d54;
+  height: 48px;
+}
+.navigation-bar-container ul.nav.side-nav-menu li.navigation-footer a .navigation-icon,
+.navigation-bar-container ul.nav.side-nav-footer li.navigation-footer a .navigation-icon {
+  color: #3fae2a;
+  font-size: 19px;
+  position: relative;
+  padding: 0 15px;
+  left: calc(30%);
+}
+.navigation-bar-container ul.nav.side-nav-menu li.navigation-footer a .navigation-icon:hover,
+.navigation-bar-container ul.nav.side-nav-footer li.navigation-footer a .navigation-icon:hover {
+  color: #fff;
+}
+.navigation-bar-container ul.nav.side-nav-menu li > ul > li,
+.navigation-bar-container ul.nav.side-nav-footer li > ul > li {
+  background-color: #323544;
+}
+.navigation-bar-container ul.nav.side-nav-menu li > ul > li a,
+.navigation-bar-container ul.nav.side-nav-footer li > ul > li a {
+  font-family: 'Roboto', sans-serif;
+  font-weight: normal;
+  font-style: normal;
+  line-height: 1;
+  color: #333;
+  font-size: 14px;
+  color: #999;
+}
+.navigation-bar-container ul.nav.side-nav-menu li > ul > li a .submenu-icon,
+.navigation-bar-container ul.nav.side-nav-footer li > ul > li a .submenu-icon {
+  line-height: 14px;
+  font-size: 14px;
+}
+.navigation-bar-container ul.nav.side-nav-menu li > ul > li > a:hover,
+.navigation-bar-container ul.nav.side-nav-footer li > ul > li > a:hover,
+.navigation-bar-container ul.nav.side-nav-menu li > a:hover,
+.navigation-bar-container ul.nav.side-nav-footer li > a:hover {
+  background: #404351;
+  cursor: pointer;
+  color: #fff;
+}
+.navigation-bar-container ul.nav.side-nav-menu li > ul > li > a:hover .navigation-menu-item,
+.navigation-bar-container ul.nav.side-nav-footer li > ul > li > a:hover .navigation-menu-item,
+.navigation-bar-container ul.nav.side-nav-menu li > a:hover .navigation-menu-item,
+.navigation-bar-container ul.nav.side-nav-footer li > a:hover .navigation-menu-item,
+.navigation-bar-container ul.nav.side-nav-menu li > ul > li > a:hover .navigation-icon,
+.navigation-bar-container ul.nav.side-nav-footer li > ul > li > a:hover .navigation-icon,
+.navigation-bar-container ul.nav.side-nav-menu li > a:hover .navigation-icon,
+.navigation-bar-container ul.nav.side-nav-footer li > a:hover .navigation-icon,
+.navigation-bar-container ul.nav.side-nav-menu li > ul > li > a:hover .toggle-icon,
+.navigation-bar-container ul.nav.side-nav-footer li > ul > li > a:hover .toggle-icon,
+.navigation-bar-container ul.nav.side-nav-menu li > a:hover .toggle-icon,
+.navigation-bar-container ul.nav.side-nav-footer li > a:hover .toggle-icon,
+.navigation-bar-container ul.nav.side-nav-menu li > ul > li > a:hover .submenu-item,
+.navigation-bar-container ul.nav.side-nav-footer li > ul > li > a:hover .submenu-item,
+.navigation-bar-container ul.nav.side-nav-menu li > a:hover .submenu-item,
+.navigation-bar-container ul.nav.side-nav-footer li > a:hover .submenu-item {
+  color: #fff;
+}
+.navigation-bar-container ul.nav.side-nav-menu li.active:not(.has-sub-menu),
+.navigation-bar-container ul.nav.side-nav-footer li.active:not(.has-sub-menu),
+.navigation-bar-container ul.nav.side-nav-menu li.active.collapsed,
+.navigation-bar-container ul.nav.side-nav-footer li.active.collapsed {
+  background: #404351;
+  cursor: pointer;
+}
+.navigation-bar-container ul.nav.side-nav-menu li.active:not(.has-sub-menu) > a,
+.navigation-bar-container ul.nav.side-nav-footer li.active:not(.has-sub-menu) > a,
+.navigation-bar-container ul.nav.side-nav-menu li.active.collapsed > a,
+.navigation-bar-container ul.nav.side-nav-footer li.active.collapsed > a {
+  color: #fff;
+}
+.navigation-bar-container ul.nav.side-nav-menu li.active:not(.has-sub-menu) > a .navigation-menu-item,
+.navigation-bar-container ul.nav.side-nav-footer li.active:not(.has-sub-menu) > a .navigation-menu-item,
+.navigation-bar-container ul.nav.side-nav-menu li.active.collapsed > a .navigation-menu-item,
+.navigation-bar-container ul.nav.side-nav-footer li.active.collapsed > a .navigation-menu-item,
+.navigation-bar-container ul.nav.side-nav-menu li.active:not(.has-sub-menu) > a .submenu-item,
+.navigation-bar-container ul.nav.side-nav-footer li.active:not(.has-sub-menu) > a .submenu-item,
+.navigation-bar-container ul.nav.side-nav-menu li.active.collapsed > a .submenu-item,
+.navigation-bar-container ul.nav.side-nav-footer li.active.collapsed > a .submenu-item,
+.navigation-bar-container ul.nav.side-nav-menu li.active:not(.has-sub-menu) > a .navigation-icon,
+.navigation-bar-container ul.nav.side-nav-footer li.active:not(.has-sub-menu) > a .navigation-icon,
+.navigation-bar-container ul.nav.side-nav-menu li.active.collapsed > a .navigation-icon,
+.navigation-bar-container ul.nav.side-nav-footer li.active.collapsed > a .navigation-icon,
+.navigation-bar-container ul.nav.side-nav-menu li.active:not(.has-sub-menu) > a .toggle-icon,
+.navigation-bar-container ul.nav.side-nav-footer li.active:not(.has-sub-menu) > a .toggle-icon,
+.navigation-bar-container ul.nav.side-nav-menu li.active.collapsed > a .toggle-icon,
+.navigation-bar-container ul.nav.side-nav-footer li.active.collapsed > a .toggle-icon {
+  color: #fff;
+}
+.navigation-bar-container ul.nav.side-nav-menu li.active:not(.has-sub-menu) > a:after,
+.navigation-bar-container ul.nav.side-nav-footer li.active:not(.has-sub-menu) > a:after,
+.navigation-bar-container ul.nav.side-nav-menu li.active.collapsed > a:after,
+.navigation-bar-container ul.nav.side-nav-footer li.active.collapsed > a:after {
+  left: 0;
+  top: 50%;
+  border: solid transparent;
+  border-width: 10px 7px;
+  content: " ";
+  height: 0;
+  width: 0;
+  position: absolute;
+  pointer-events: none;
+  border-color: transparent;
+  border-left-color: #3fae2a;
+  margin-top: -12px;
+}
+.navigation-bar-container ul.nav.side-nav-menu .more-actions,
+.navigation-bar-container ul.nav.side-nav-footer .more-actions {
+  display: block;
+  position: absolute;
+  top: 14px;
+  right: 33px;
+  line-height: 25px;
+  width: 20px;
+  text-align: center;
+  font-size: 14px;
+  cursor: pointer;
+  vertical-align: middle;
+  color: #fff;
+}
+.navigation-bar-container ul.nav.side-nav-menu .more-actions .dropdown-menu > li > a,
+.navigation-bar-container ul.nav.side-nav-footer .more-actions .dropdown-menu > li > a {
+  color: #666;
+}
+.navigation-bar-container ul.nav.side-nav-menu .more-actions .dropdown-menu > li > a i,
+.navigation-bar-container ul.nav.side-nav-footer .more-actions .dropdown-menu > li > a i {
+  color: #666;
+}
+.navigation-bar-container ul.nav.side-nav-menu .more-actions .dropdown-menu > li > a:hover,
+.navigation-bar-container ul.nav.side-nav-footer .more-actions .dropdown-menu > li > a:hover {
+  background: #f5f5f5;
+}
+.navigation-bar-container ul.nav.side-nav-menu .menu-item-name,
+.navigation-bar-container ul.nav.side-nav-footer .menu-item-name {
+  display: inline-block;
+  vertical-align: bottom;
+  max-width: 100px;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  -o-text-overflow: ellipsis;
+  -ms-text-overflow: ellipsis;
+  white-space: nowrap;
+}
+.navigation-bar-container .nav-pills > li.active > a,
+.navigation-bar-container .nav-pills > li.active > a:focus,
+.navigation-bar-container .nav-pills > li.active > a:hover,
+.navigation-bar-container .nav > li > a:focus,
+.navigation-bar-container .nav > li > a:hover {
+  background-color: inherit;
+}
+.navigation-bar-container.collapsed {
+  width: 50px;
+}
+.navigation-bar-container.collapsed ul.nav.side-nav-header {
+  width: 50px;
+}
+.navigation-bar-container.collapsed ul.nav.side-nav-header li.navigation-header {
+  padding: 15px 0 15px 15px;
+}
+.navigation-bar-container.collapsed ul.nav.side-nav-header li.navigation-header span.ambari-header,
+.navigation-bar-container.collapsed ul.nav.side-nav-header li.navigation-header span.toggle-icon,
+.navigation-bar-container.collapsed ul.nav.side-nav-header li.navigation-header .dropdown-menu {
+  display: none;
+}
+.navigation-bar-container.collapsed ul.nav.side-nav-menu,
+.navigation-bar-container.collapsed ul.nav.side-nav-footer {
+  width: 50px;
+}
+.navigation-bar-container.collapsed ul.nav.side-nav-menu li a,
+.navigation-bar-container.collapsed ul.nav.side-nav-footer li a {
+  padding: 15px 0 15px 15px;
+  width: 50px;
+}
+.navigation-bar-container.collapsed ul.nav.side-nav-menu li a .navigation-menu-item,
+.navigation-bar-container.collapsed ul.nav.side-nav-footer li a .navigation-menu-item,
+.navigation-bar-container.collapsed ul.nav.side-nav-menu li a .toggle-icon,
+.navigation-bar-container.collapsed ul.nav.side-nav-footer li a .toggle-icon {
+  display: none;
+}
+.navigation-bar-container.collapsed ul.nav.side-nav-menu li a .navigation-icon,
+.navigation-bar-container.collapsed ul.nav.side-nav-footer li a .navigation-icon {
+  font-size: 19px;
+}
+.navigation-bar-container.collapsed ul.nav.side-nav-menu li.navigation-footer a .navigation-icon,
+.navigation-bar-container.collapsed ul.nav.side-nav-footer li.navigation-footer a .navigation-icon {
+  padding: 0 5px;
+  left: 0;
+}
+.navigation-bar-container.collapsed ul.nav.side-nav-menu li ul.sub-menu,
+.navigation-bar-container.collapsed ul.nav.side-nav-footer li ul.sub-menu {
+  display: none;
+  width: 230px;
+  position: absolute;
+  z-index: 100;
+  top: 0;
+  left: 50px;
+}
+.navigation-bar-container.collapsed ul.nav.side-nav-menu li.submenu-li > a,
+.navigation-bar-container.collapsed ul.nav.side-nav-footer li.submenu-li > a {
+  padding: 10px 5px 10px 25px;
+  width: 230px;
+}
+.navigation-bar-container.collapsed ul.nav.side-nav-menu li.active,
+.navigation-bar-container.collapsed ul.nav.side-nav-footer li.active {
+  background: #404351;
+  cursor: pointer;
+}
+.navigation-bar-container.collapsed ul.nav.side-nav-menu li.active > a,
+.navigation-bar-container.collapsed ul.nav.side-nav-footer li.active > a {
+  color: #fff;
+}
+.navigation-bar-container.collapsed ul.nav.side-nav-menu li.active > a .navigation-menu-item,
+.navigation-bar-container.collapsed ul.nav.side-nav-footer li.active > a .navigation-menu-item,
+.navigation-bar-container.collapsed ul.nav.side-nav-menu li.active > a .submenu-item,
+.navigation-bar-container.collapsed ul.nav.side-nav-footer li.active > a .submenu-item,
+.navigation-bar-container.collapsed ul.nav.side-nav-menu li.active > a .navigation-icon,
+.navigation-bar-container.collapsed ul.nav.side-nav-footer li.active > a .navigation-icon,
+.navigation-bar-container.collapsed ul.nav.side-nav-menu li.active > a .toggle-icon,
+.navigation-bar-container.collapsed ul.nav.side-nav-footer li.active > a .toggle-icon {
+  color: #fff;
+}
+.navigation-bar-container.collapsed ul.nav.side-nav-menu li.active > a:after,
+.navigation-bar-container.collapsed ul.nav.side-nav-footer li.active > a:after {
+  left: 0;
+  top: 50%;
+  border: solid transparent;
+  border-width: 12px 6px;
+  content: " ";
+  height: 0;
+  width: 0;
+  position: absolute;
+  pointer-events: none;
+  border-color: transparent;
+  border-left-color: #3fae2a;
+  margin-top: -12px;
+}
+.navigation-bar-container.collapsed ul.nav.side-nav-menu .more-actions,
+.navigation-bar-container.collapsed ul.nav.side-nav-footer .more-actions {
+  display: none;
+}
+.navigation-bar-fit-height {
+  position: fixed;
+  top: 0;
+  bottom: 0;
+  left: 0;
+  z-index: 2079;
+}
+.navigation-bar-fit-height .side-nav-header {
+  position: absolute;
+  top: 0;
+}
+.navigation-bar-fit-height .side-nav-menu {
+  position: absolute;
+  top: 55px;
+  bottom: 50px;
+}
+.navigation-bar-fit-height .side-nav-footer {
+  position: absolute;
+  bottom: 0;
+}
+.navigation-bar-fit-height .more-actions .dropdown-menu {
+  position: fixed;
+  top: auto;
+  left: auto;
+}
+.navigation-bar-fit-height .navigation-bar-container {
+  height: 100%;
+}
+.navigation-bar-fit-height .navigation-bar-container .side-nav-menu {
+  overflow-y: auto;
+}
+.notifications-group {
+  position: relative;
+  top: 1px;
+}
+.notifications-dropdown,
+#notifications-dropdown.dropdown-menu {
+  min-width: 400px;
+  max-width: 400px;
+  min-height: 150px;
+  padding: 0px;
+  z-index: 1000;
+  right: -50px;
+  left: auto;
+  top: 260%;
+  border: none;
+  -webkit-box-shadow: 0px 2px 10px 2px rgba(0, 0, 0, 0.29);
+  -moz-box-shadow: 0px 2px 10px 2px rgba(0, 0, 0, 0.29);
+  box-shadow: 0px 2px 10px 2px rgba(0, 0, 0, 0.29);
+}
+.notifications-dropdown .popup-arrow-up,
+#notifications-dropdown.dropdown-menu .popup-arrow-up {
+  position: absolute;
+  right: 37px;
+  top: -40px;
+  width: 40px;
+  height: 40px;
+  overflow: hidden;
+}
+.notifications-dropdown .popup-arrow-up:after,
+#notifications-dropdown.dropdown-menu .popup-arrow-up:after {
+  content: "";
+  position: absolute;
+  width: 20px;
+  height: 20px;
+  background: #fff;
+  transform: rotate(45deg);
+  top: 30px;
+  left: 10px;
+  box-shadow: -1px -1px 10px -2px rgba(0, 0, 0, 0.5);
+}
+.notifications-dropdown .notifications-header,
+#notifications-dropdown.dropdown-menu .notifications-header {
+  border-bottom: 1px solid #eee;
+  padding: 15px 20px;
+}
+.notifications-dropdown .notifications-header .notifications-title,
+#notifications-dropdown.dropdown-menu .notifications-header .notifications-title {
+  font-family: 'Roboto', sans-serif;
+  font-weight: normal;
+  font-style: normal;
+  line-height: 1;
+  color: #333;
+  font-size: 16px;
+}
+.notifications-dropdown .notifications-body,
+#notifications-dropdown.dropdown-menu .notifications-body {
+  padding: 0px 15px;
+  overflow: auto;
+  max-height: 500px;
+}
+.notifications-dropdown .notifications-body .no-alert-text,
+#notifications-dropdown.dropdown-menu .notifications-body .no-alert-text {
+  padding: 15px 5px;
+}
+.notifications-dropdown .notifications-body .table-controls,
+#notifications-dropdown.dropdown-menu .notifications-body .table-controls {
+  padding: 10px 0px;
+  margin: 0px;
+  border-bottom: 1px solid #eee;
+}
+.notifications-dropdown .notifications-body .table-controls .state-filter,
+#notifications-dropdown.dropdown-menu .notifications-body .table-controls .state-filter {
+  padding: 0px;
+  font-family: 'Roboto', sans-serif;
+  font-weight: normal;
+  font-style: normal;
+  line-height: 1;
+  color: #333;
+  font-size: 12px;
+  color: #666;
+  position: relative;
+}
+.notifications-dropdown .notifications-body .table-controls .state-filter .form-control.filter-select,
+#notifications-dropdown.dropdown-menu .notifications-body .table-controls .state-filter .form-control.filter-select {
+  font-size: 12px;
+  color: #666;
+  height: 25px;
+}
+.notifications-dropdown .notifications-body .table.alerts-table,
+#notifications-dropdown.dropdown-menu .notifications-body .table.alerts-table {
+  margin-top: 0px;
+}
+.notifications-dropdown .notifications-body .table.alerts-table tbody tr,
+#notifications-dropdown.dropdown-menu .notifications-body .table.alerts-table tbody tr {
+  cursor: pointer;
+}
+.notifications-dropdown .notifications-body .table.alerts-table tbody tr.no-alert-tr:hover,
+#notifications-dropdown.dropdown-menu .notifications-body .table.alerts-table tbody tr.no-alert-tr:hover {
+  cursor: default;
+  border-color: transparent;
+  border-bottom-color: #eee;
+}
+.notifications-dropdown .notifications-body .table.alerts-table tbody tr.no-alert-tr:hover > td,
+#notifications-dropdown.dropdown-menu .notifications-body .table.alerts-table tbody tr.no-alert-tr:hover > td {
+  border-color: transparent;
+  background-color: white;
+}
+.notifications-dropdown .notifications-body .table.alerts-table tbody td.status,
+#notifications-dropdown.dropdown-menu .notifications-body .table.alerts-table tbody td.status {
+  width: 9%;
+  padding: 15px 3px;
+}
+.notifications-dropdown .notifications-body .table.alerts-table tbody td.status .alert-state-CRITICAL,
+#notifications-dropdown.dropdown-menu .notifications-body .table.alerts-table tbody td.status .alert-state-CRITICAL {
+  color: #EF6162;
+}
+.notifications-dropdown .notifications-body .table.alerts-table tbody td.status .alert-state-WARNING,
+#notifications-dropdown.dropdown-menu .notifications-body .table.alerts-table tbody td.status .alert-state-WARNING {
+  color: #E98A40;
+}
+.notifications-dropdown .notifications-body .table.alerts-table tbody td.content,
+#notifications-dropdown.dropdown-menu .notifications-body .table.alerts-table tbody td.content {
+  width: 90%;
+  padding: 15px 3px 10px 3px;
+  font-family: 'Roboto', sans-serif;
+  font-weight: normal;
+  font-style: normal;
+  line-height: 1;
+  color: #333;
+  line-height: 1.3;
+}
+.notifications-dropdown .notifications-body .table.alerts-table tbody td.content .name,
+#notifications-dropdown.dropdown-menu .notifications-body .table.alerts-table tbody td.content .name {
+  font-weight: bold;
+  font-size: 14px;
+  color: #333;
+  margin-bottom: 5px;
+}
+.notifications-dropdown .notifications-body .table.alerts-table tbody td.content .description,
+#notifications-dropdown.dropdown-menu .notifications-body .table.alerts-table tbody td.content .description {
+  font-size: 12px;
+  color: #666;
+  margin-bottom: 4px;
+  display: block;
+  display: -webkit-box;
+  -webkit-line-clamp: 3;
+  max-height: 47px;
+  /* For firefox */
+  -webkit-box-orient: vertical;
+  overflow: hidden;
+  text-overflow: ellipsis;
+  /* Break long urls*/
+  overflow-wrap: break-word;
+  word-wrap: break-word;
+  -ms-word-break: break-all;
+  word-break: break-all;
+  word-break: break-word;
+  /* Adds a hyphen where the word breaks*/
+  -ms-hyphens: auto;
+  -moz-hyphens: auto;
+  -webkit-hyphens: auto;
+  hyphens: auto;
+}
+.notifications-dropdown .notifications-body .table.alerts-table tbody td.content .timestamp,
+#notifications-dropdown.dropdown-menu .notifications-body .table.alerts-table tbody td.content .timestamp {
+  text-align: right;
+  font-size: 11px;
+  color: #999;
+}
+.notifications-dropdown .notifications-footer,
+#notifications-dropdown.dropdown-menu .notifications-footer {
+  border-top: 1px solid #eee;
+  padding: 15px;
+}
+.modal-backdrop {
+  background-color: #808080;
+}
+.modal .modal-content {
+  border-radius: 2px;
+}
+.modal .modal-content .modal-header,
+.modal .modal-content .modal-body,
+.modal .modal-content .modal-footer {
+  padding-left: 20px;
+  padding-right: 20px;
+}
+.modal .modal-content .modal-header {
+  border-bottom: none;
+  padding-top: 20px;
+  color: #666;
+  font-size: 20px;
+}
+.modal .modal-content .modal-header h4 {
+  margin: 0;
+  color: inherit;
+  font-size: inherit;
+}
+.modal .modal-content .modal-body {
+  color: #666;
+  font-size: 12px;
+}
+.modal .modal-content .modal-footer {
+  border-top: none;
+  padding-bottom: 20px;
+}
+.modal .modal-content .modal-footer .btn ~ .btn {
+  margin-left: 10px;
+}
+.accordion .panel-group,
+.wizard .wizard-body .wizard-content .accordion .panel-group {
+  margin-bottom: 0;
+}
+.accordion .panel-group .panel,
+.wizard .wizard-body .wizard-content .accordion .panel-group .panel {
+  border-radius: 0;
+  border: none;
+  margin-top: 0;
+  padding: 0 10px;
+}
+.accordion .panel-group .panel .panel-heading,
+.wizard .wizard-body .wizard-content .accordion .panel-group .panel .panel-heading {
+  height: 50px;
+  padding: 15px 10px;
+  border: 1px solid;
+  border-color: #ddd transparent;
+  border-top: none;
+  background: #fff;
+}
+.accordion .panel-group .panel .panel-heading .panel-title,
+.wizard .wizard-body .wizard-content .accordion .panel-group .panel .panel-heading .panel-title {
+  font-family: 'Roboto', sans-serif;
+  font-weight: normal;
+  font-style: normal;
+  line-height: 1;
+  color: #333;
+}
+.accordion .panel-group .panel .panel-heading .panel-title > a,
+.wizard .wizard-body .wizard-content .accordion .panel-group .panel .panel-heading .panel-title > a {
+  font-size: 18px;
+  color: #333;
+}
+.accordion .panel-group .panel .panel-heading .panel-title > i,
+.wizard .wizard-body .wizard-content .accordion .panel-group .panel .panel-heading .panel-title > i {
+  font-size: 20px;
+  color: #1491c1;
+}
+.accordion .panel-group .panel .panel-heading:hover,
+.wizard .wizard-body .wizard-content .accordion .panel-group .panel .panel-heading:hover {
+  background: #f3faff;
+  cursor: pointer;
+}
+.accordion .panel-group .panel .panel-body,
+.wizard .wizard-body .wizard-content .accordion .panel-group .panel .panel-body {
+  padding: 15px 10px 20px 20px;
+}
+h1,
+h2,
+h3,
+h4,
+h5,
+h6,
+.h1,
+.h2,
+.h3,
+.h4,
+.h5,
+.h6 {
+  font-family: 'Roboto', sans-serif;
+}
+h1,
+.h1 {
+  font-size: 24px;
+}
+h2,
+.h2 {
+  font-size: 18px;
+}
+body,
+.body {
+  font-family: 'Roboto', sans-serif;
+  font-weight: normal;
+  font-style: normal;
+  line-height: 1;
+  color: #333;
+  font-size: 14px;
+}
+.description {
+  font-family: 'Roboto', sans-serif;
+  font-size: 12px;
+  color: #000;
+}
+a,
+a:visited,
+a:focus {
+  color: #1491C1;
+  text-decoration: none;
+}
+a:hover,
+a:visited:hover,
+a:focus:hover {
+  text-decoration: underline;
+}
+a:active,
+a:visited:active,
+a:focus:active {
+  text-decoration: none;
+}
+a[disabled],
+a:visited[disabled],
+a:focus[disabled],
+a.disabled,
+a:visited.disabled,
+a:focus.disabled {
+  cursor: not-allowed;
+  color: #666;
+  text-decoration: none;
+}
+a[disabled]:hover,
+a:visited[disabled]:hover,
+a:focus[disabled]:hover,
+a.disabled:hover,
+a:visited.disabled:hover,
+a:focus.disabled:hover {
+  text-decoration: none;
+}

+ 72 - 0
ambari-admin/src/main/resources/ui/admin-web/app/styles/toggle-switch.css

@@ -0,0 +1,72 @@
+/**
+ * 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.
+ */
+
+.ats-switch {
+  border-radius: 20px;
+  height: 40px;
+  min-width: 66px;
+  width: 66px;
+  position: relative;
+  overflow: hidden;
+  border-color: #EBECF1;
+  border-width: 2px;
+}
+
+.ats-switch .knob {
+  margin-left: 34px;
+  border-radius: 20px;
+  height: 32px;
+  width: 32px;
+  margin-top: 2px;
+}
+
+.ats-switch .switch-left,
+.ats-switch .switch-right {
+  position: absolute;
+  right: -40px;
+}
+
+.ats-switch .switch-animate {
+  height: 100%;
+}
+
+.ats-switch .switch-off {
+  background-color: white;
+}
+
+.ats-switch .switch-on {
+  background-color: #1EB475;
+  left: -10%;
+}
+
+.ats-switch .switch-on .knob {
+  background-color: white;
+}
+
+.ats-switch .switch-off .knob {
+  background-color: #999;
+}
+
+.switch-option-label {
+  padding-left: 5px;
+  font-size: 14px;
+}
+
+.switch-inline-label {
+  line-height: 40px;
+}

+ 200 - 0
ambari-admin/src/main/resources/ui/admin-web/app/styles/top-nav.css

@@ -0,0 +1,200 @@
+/**
+ * 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.
+ */
+
+
+#top-nav .navbar.navbar-static-top {
+  background: #fff;
+  border-top: 1px solid #e3e3e3;
+  border-bottom: 1px solid #e3e3e3;
+  margin-bottom: 10px;
+  min-height: 55px;
+}
+
+#top-nav .breadcrumb li {
+  padding: 15px 0;
+}
+
+#top-nav .navbar-text {
+  padding: 2px 0;
+}
+
+#top-nav .navbar-right {
+  font-size: 16px;
+}
+
+#top-nav .container {
+  background: #fff;
+}
+
+/** Override bootstrap styles **/
+@media (min-width: 0) {
+  .navbar-nav {
+    float: left;
+    margin: 0;
+  }
+  .navbar-nav > li {
+    float: left;
+  }
+  .navbar-nav > li > a {
+    padding-top: 15px;
+    padding-bottom: 15px;
+  }
+  .navbar-left {
+    float: left !important;
+  }
+  .navbar-right {
+    float: right !important;
+    margin-right: -15px;
+  }
+  .navbar-right ~ .navbar-right {
+    margin-right: 0;
+  }
+  .navbar-right .dropdown-menu {
+    right: 0;
+    left: auto;
+  }
+  .navbar-right .dropdown-menu-left {
+    right: auto;
+    left: 0;
+  }
+  .navbar {
+    border-radius: 4px;
+  }
+  .navbar-header {
+    float: left;
+  }
+  .container > .navbar-header,
+  .container-fluid > .navbar-header,
+  .container > .navbar-collapse,
+  .container-fluid > .navbar-collapse {
+    margin-right: 0;
+    margin-left: 0;
+  }
+  .navbar-static-top {
+    border-radius: 0;
+  }
+  .navbar-fixed-top,
+  .navbar-fixed-bottom {
+    border-radius: 0;
+  }
+  .navbar > .container .navbar-brand,
+  .navbar > .container-fluid .navbar-brand {
+    margin-left: -15px;
+  }
+  .navbar-toggle {
+    display: none;
+  }
+  .navbar-text {
+    float: left;
+    margin-right: 15px;
+    margin-left: 15px;
+  }
+  .navbar-header {
+    float: left;
+  }
+  .navbar-collapse {
+    width: auto;
+    border-top: 0;
+    -webkit-box-shadow: none;
+    box-shadow: none;
+  }
+  .navbar-collapse.collapse {
+    display: block !important;
+    height: auto !important;
+    padding-bottom: 0;
+    overflow: visible !important;
+  }
+  .navbar-collapse.in {
+    overflow-y: visible;
+  }
+  .navbar-fixed-top .navbar-collapse,
+  .navbar-static-top .navbar-collapse,
+  .navbar-fixed-bottom .navbar-collapse {
+    padding-right: 0;
+    padding-left: 0;
+  }
+  .navbar {
+    border-radius: 4px;
+  }
+  .navbar-form .form-group {
+    display: inline-block;
+    margin-bottom: 0;
+    vertical-align: middle;
+  }
+  .navbar-form .form-control {
+    display: inline-block;
+    width: auto;
+    vertical-align: middle;
+  }
+  .navbar-form .form-control-static {
+    display: inline-block;
+  }
+  .navbar-form .input-group {
+    display: inline-table;
+    vertical-align: middle;
+  }
+  .navbar-form .input-group .input-group-addon,
+  .navbar-form .input-group .input-group-btn,
+  .navbar-form .input-group .form-control {
+    width: auto;
+  }
+  .navbar-form .input-group > .form-control {
+    width: 100%;
+  }
+  .navbar-form .control-label {
+    margin-bottom: 0;
+    vertical-align: middle;
+  }
+  .navbar-form .radio,
+  .navbar-form .checkbox {
+    display: inline-block;
+    margin-top: 0;
+    margin-bottom: 0;
+    vertical-align: middle;
+  }
+  .navbar-form .radio label,
+  .navbar-form .checkbox label {
+    padding-left: 0;
+  }
+  .navbar-form .radio input[type="radio"],
+  .navbar-form .checkbox input[type="checkbox"] {
+    position: relative;
+    margin-left: 0;
+  }
+  .navbar-form .has-feedback .form-control-feedback {
+    top: 0;
+  }
+  .navbar-form {
+    width: auto;
+    padding-top: 0;
+    padding-bottom: 0;
+    margin-right: 0;
+    margin-left: 0;
+    border: 0;
+    -webkit-box-shadow: none;
+    box-shadow: none;
+  }
+}
+
+@media (max-width: 767px) {
+  .navbar-nav .open .dropdown-menu {
+    position: absolute;
+  }
+}
+
+

+ 43 - 0
ambari-admin/src/main/resources/ui/admin-web/app/styles/user-management.css

@@ -0,0 +1,43 @@
+/**
+ * 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.
+ */
+
+#user-management .table th {
+  vertical-align: baseline;
+}
+
+#user-management .nav.nav-tabs {
+  margin-bottom: 0;
+}
+
+#user-management .users-pane,
+#user-management .groups-pane {
+  margin-top: -35px;
+}
+
+#group-edit .roles-label,
+#user-edit .roles-label {
+  line-height: 30px;
+}
+
+#create-user-form .roles-label i,
+#create-group-form .roles-label i,
+#group-edit .roles-label i,
+#user-edit .roles-label i {
+  margin-right: -10px;
+  cursor: pointer;
+}

+ 105 - 0
ambari-admin/src/main/resources/ui/admin-web/app/styles/views.css

@@ -0,0 +1,105 @@
+/**
+ * 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.
+ */
+
+#create-instance-form i {
+  cursor: pointer;
+}
+
+#create-instance-form .modal-body {
+  max-height: 600px;
+  overflow-y: auto;
+  overflow-x: hidden;
+}
+
+#create-instance-form button.active {
+  color: #333;
+  background-color: #e6e6e6;
+  border-color: #adadad;
+}
+
+input[type="checkbox"] + label {
+  line-height: 18px;
+}
+
+.viewstatus {
+  display: inline-block;
+}
+
+.viewstatus.pending {
+  width: 12px;
+  height: 12px;
+  border: 2px solid black;
+  border-radius: 50%;
+  vertical-align: middle;
+  position: relative;
+}
+
+.viewstatus.pending:before, .viewstatus.pending:after {
+  content: '';
+  position: absolute;
+  left: 4px;
+  top: 3px;
+  width: 5px;
+  height: 2px;
+  background: black;
+}
+
+.viewstatus.pending:after {
+  top: -3px;
+  left: 3px;
+  width: 2px;
+  height: 2px;
+  border-radius: 100%;
+}
+
+.viewstatus.pending:before {
+  -webkit-transform-origin: 0% 50%;
+  -moz-transform-origin: 0% 50%;
+  -ms-transform-origin: 0% 50%;
+  -o-transform-origin: 0% 50%;
+  transform-origin: 0% 50%;
+
+  animation: rotate 2.0s infinite linear;
+  -webkit-animation: rotate 2.0s infinite linear;
+}
+
+.viewstatus.deploying {
+  width: 17px;
+  height: 12px;
+  text-align: center;
+  vertical-align: text-top;
+}
+
+.viewstatus.deploying > div {
+  background: black;
+  height: 100%;
+  width: 3px;
+  display: inline-block;
+  -webkit-animation: stretchdelay 1.2s infinite ease-in-out;
+  animation: stretchdelay 1.2s infinite ease-in-out;
+}
+
+.viewstatus.deploying .rect2 {
+  -webkit-animation-delay: -1.1s;
+  animation-delay: -1.1s;
+}
+
+.viewstatus.deploying .rect3 {
+  -webkit-animation-delay: -1.0s;
+  animation-delay: -1.0s;
+}

+ 0 - 204
ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/create.html

@@ -1,204 +0,0 @@
-<!--
-* 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.
--->
-<ol class="breadcrumb">
-  <li><a href="#/views">{{'common.views' | translate}}</a></li>
-  <li class="active"> {{isClone ? 'views.clone' : 'views.create' | translate}}</li>
-</ol>
-<hr>
-<form class="form-horizontal create-view-form" role="form" name="form.instanceCreateForm" novalidate>
-  <div class="view-header">
-    <div class="form-group">
-      <div class="col-sm-2">
-        <label for="" class="control-label">{{'common.view' | translate}}</label>
-      </div>
-      <div class="col-sm-10"><label for="" class="control-label">{{view.ViewVersionInfo.view_name}}</label></div>
-    </div>
-    <div class="form-group">
-      <div class="col-sm-2"><label for="" class="control-label">{{'common.version' | translate}}</label></div>
-      <div class="col-sm-3">
-        <select ng-model="version" class="instanceversion-input form-control" ng-change="versionChanged()" ng-options="o as o for o in versions"></select>
-      </div>
-    </div>
-  </div>
-
-  <div class="panel panel-default">
-    <div class="panel-heading">
-      <h3 class="panel-title">{{'common.details' | translate}}</h3>
-    </div>
-    <div class="panel-body">
-      <div class="form-group"
-      ng-class="{'has-error' : ( (form.instanceCreateForm.instanceNameInput.$error.required || form.instanceCreateForm.instanceNameInput.$error.pattern) && form.instanceCreateForm.submitted) || instanceExists }"
-      >
-        <label for="" class="control-label col-sm-3">{{'views.instanceName' | translate}}*</label>
-        <div class="col-sm-9">
-          <input type="text" class="form-control instancename-input" name="instanceNameInput" ng-pattern="nameValidationPattern" required ng-model="instance.instance_name" autocomplete="off">
-
-          <div class="alert alert-danger no-margin-bottom top-margin" ng-show='form.instanceCreateForm.instanceNameInput.$error.required && form.instanceCreateForm.submitted'>{{'common.alerts.fieldIsRequired' | translate}}</div>
-          <div class="alert alert-danger no-margin-bottom top-margin" ng-show='form.instanceCreateForm.instanceNameInput.$error.pattern && form.instanceCreateForm.submitted'>{{'views.alerts.noSpecialCharsOrSpaces' | translate}}</div>
-          <div class="alert alert-danger no-margin-bottom top-margin" ng-show='instanceExists'>{{'views.alerts.instanceExists' | translate}}</div>
-        </div>
-      </div>
-      <div class="form-group"
-      ng-class="{'has-error' : ( (form.instanceCreateForm.displayLabel.$error.required || form.instanceCreateForm.displayLabel.$error.pattern) && form.instanceCreateForm.submitted)}">
-        <label for="" class="control-label col-sm-3">{{'views.displayName' | translate}}*</label>
-        <div class="col-sm-9">
-          <input type="text" class="form-control instancelabel-input" name="displayLabel" ng-model="instance.label" required ng-pattern="/^([a-zA-Z0-9._\s]+)$/" autocomplete="off">
-
-          <div class="alert alert-danger no-margin-bottom top-margin" ng-show='form.instanceCreateForm.displayLabel.$error.required && form.instanceCreateForm.submitted'>
-            {{'common.alerts.fieldIsRequired' | translate}}
-          </div>
-          <div class="alert alert-danger no-margin-bottom top-margin" ng-show='form.instanceCreateForm.displayLabel.$error.pattern && form.instanceCreateForm.submitted'>
-            {{'views.alerts.noSpecialChars' | translate}}
-          </div>
-        </div>
-      </div>
-      <div class="form-group" ng-class="{'has-error' : form.instanceCreateForm.description.$error.required && form.instanceCreateForm.submitted }">
-        <label for="" class="control-label col-sm-3">{{'views.description' | translate}}*</label>
-        <div class="col-sm-9">
-          <input type="text" class="form-control" name="description" ng-model="instance.description" maxlength="140" required>
-          <div class="alert alert-danger no-margin-bottom top-margin" ng-show='form.instanceCreateForm.description.$error.required && form.instanceCreateForm.submitted'>
-            {{'common.alerts.fieldIsRequired' | translate}}
-          </div>
-        </div>
-      </div>
-
-      <div class="form-group">
-        <div class="col-sm-10 col-sm-offset-3">
-          <div class="checkbox">
-            <label>
-              <input type="checkbox" ng-model='instance.visible' class="visibilityCheckbox"> {{'views.visible' | translate}}
-            </label>
-          </div>
-        </div>
-      </div>
-    </div>
-  </div>
-
-  <div class="panel panel-default" ng-hide="!numberOfSettingConfigs">
-    <div class="panel-heading">
-      <h3 class="panel-title">{{'views.settings' | translate}}</h3>
-    </div>
-    <div class="panel-body">
-      <div class="form-group" ng-repeat="parameter in instance.properties | filter:{clusterConfig:false}"
-           ng-class="{'has-error' : ((form.instanceCreateForm[parameter.name].$error.required && form.instanceCreateForm.submitted) || form.instanceCreateForm[parameter.name].validationError)}" >
-        <label for="" class="col-sm-3 control-label" ng-class="{'not-required': !parameter.required}">{{parameter.label || parameter.displayName}}{{parameter.required ? '*' : ''}}</label>
-        <div ng-switch="parameter.type">
-          <div class="col-sm-9 checkbox" ng-switch-when="boolean">
-            <input type="checkbox" class="viewproperty-input" name="{{parameter.name}}" ng-required="parameter.required" ng-model="parameter.value" popover="{{parameter.description}}" popover-title="{{parameter.name}}" popover-trigger="mouseenter">
-          </div>
-          <div class="col-sm-9" ng-switch-default>
-            <input type="{{parameter.masked ? 'password' : 'text'}}" class="form-control viewproperty-input" name="{{parameter.name}}" ng-change="form.instanceCreateForm[parameter.name].validationError=''" ng-required="parameter.required" ng-model="parameter.value" autocomplete="off" popover="{{parameter.description}}" popover-title="{{parameter.name}}" popover-trigger="mouseenter" placeholder="{{parameter.placeholder}}">
-            <div class="alert alert-danger no-margin-bottom top-margin" ng-show='form.instanceCreateForm[parameter.name].$error.required && form.instanceCreateForm.submitted'>
-              {{'common.alerts.fieldIsRequired' | translate}}
-            </div>
-            <div class="alert alert-danger no-margin-bottom top-margin" ng-show='form.instanceCreateForm[parameter.name].validationError'>
-              {{form.instanceCreateForm[parameter.name].validationMessage}}
-            </div>
-          </div>
-        </div>
-      </div>
-    </div>
-  </div>
-
-  <div class="panel panel-default" ng-hide="!numberOfClusterConfigs && !clusterConfigurable">
-    <div class="panel-heading">
-      <h3 class="panel-title">{{'views.clusterConfiguration' | translate}}</h3>
-    </div>
-
-    <div class="panel-body property-form" popover="{{clusterConfigurableErrorMsg}}" popover-trigger="mouseenter">
-      <div class="checkbox create-checkbox-cluster">
-        <label>
-          <input type="radio" ng-disabled="!clusterConfigurable || noLocalClusterAvailible" ng-model="instance.clusterType" ng-change="enableLocalCluster()" value="LOCAL_AMBARI" class="visibilityCheckbox"> {{'views.localCluster' | translate}}
-        </label>
-      </div>
-
-      <div class="form-horizontal property-form">
-        <div class="form-group">
-
-          <label for="" class="control-label col-sm-3 ng-binding not-required" >{{'views.clusterName' | translate}}</label>
-          <div>
-            <div class="col-sm-9">
-              <select ng-model="cluster" ng-disabled="instance.clusterType != 'LOCAL_AMBARI' || noLocalClusterAvailible" ng-change="onClusterChange()" class="clusters-name-dropdown form-control"  ng-options="o as o.name for o in clusters"></select>
-            </div>
-          </div>
-        </div>
-      </div>
-
-    </div>
-
-    <div class="panel-body property-form" popover="{{clusterConfigurableErrorMsg}}" popover-trigger="mouseenter">
-      <div class="checkbox create-checkbox-cluster">
-        <label>
-          <input type="radio" ng-disabled="!clusterConfigurable || noRemoteClusterAvailible" ng-model="instance.clusterType" ng-change="enableLocalCluster()" value="REMOTE_AMBARI" class="visibilityCheckbox"> {{'views.remoteCluster' | translate}}
-        </label>
-      </div>
-
-      <div class="form-horizontal property-form">
-        <div class="form-group">
-
-          <label for="" class="control-label col-sm-3 ng-binding not-required" >{{'views.clusterName' | translate}}</label>
-          <div>
-            <div class="col-sm-9">
-              <select ng-model="data.remoteCluster" ng-disabled="instance.clusterType != 'REMOTE_AMBARI' || noRemoteClusterAvailable" ng-change="onClusterChange()" class="clusters-name-dropdown form-control"  ng-options="o as o.name for o in remoteClusters"></select>
-            </div>
-          </div>
-        </div>
-      </div>
-
-    </div>
-
-    <div class="panel-body property-form" ng-hide="!numberOfClusterConfigs">
-      <div class="checkbox">
-        <label>
-          <input type="radio" ng-model="instance.clusterType" value="NONE" class="visibilityCheckbox"> {{'views.custom' | translate}}
-        </label>
-      </div>
-      <div class="alert alert-danger bottom-margin top-margin" ng-show='form.instanceCreateForm.generalValidationError'>
-        {{form.instanceCreateForm.generalValidationError}}
-      </div>
-      <div class="form-group" ng-repeat="parameter in instance.properties | filter:{clusterConfig:true}"
-        ng-class="{'has-error' : ((form.instanceCreateForm[parameter.name].$error.required && form.instanceCreateForm.submitted) || form.instanceCreateForm[parameter.name].validationError)}" >
-        <label for="" class="col-sm-3 control-label" ng-class="{'not-required': !parameter.required}">{{parameter.label || parameter.displayName}}{{parameter.required ? '*' : ''}}</label>
-        <div ng-switch="parameter.type">
-          <div class="col-sm-9 checkbox" ng-switch-when="boolean">
-            <input type="checkbox" class="viewproperty-input" name="{{parameter.name}}" ng-disabled="instance.clusterType == 'NONE'" ng-required="parameter.required && (instance.clusterType == 'NONE')" ng-model="parameter.value" popover="{{parameter.description}}" popover-title="{{parameter.name}}" popover-trigger="mouseenter">
-          </div>
-          <div class="col-sm-9" ng-switch-default>
-            <input type="{{parameter.masked ? 'password' : 'text'}}" class="form-control viewproperty-input" name="{{parameter.name}}" ng-disabled="instance.clusterType != 'NONE'" ng-change="form.instanceCreateForm[parameter.name].validationError=''" ng-required="parameter.required && (instance.clusterType == 'NONE')" ng-model="parameter.value" autocomplete="off" popover="{{parameter.description}}" popover-title="{{parameter.name}}" popover-trigger="mouseenter" placeholder="{{parameter.placeholder}}">
-            <div class="alert alert-danger no-margin-bottom top-margin" ng-show="form.instanceCreateForm[parameter.name].$error.required && form.instanceCreateForm.submitted && (instance.clusterType == 'NONE')">
-              {{'common.alerts.fieldIsRequired' | translate}}
-            </div>
-            <div class="alert alert-danger no-margin-bottom top-margin" ng-show='form.instanceCreateForm[parameter.name].validationError'>
-              {{form.instanceCreateForm[parameter.name].validationMessage}}
-            </div>
-          </div>
-        </div>
-      </div>
-      <div ng-show="!instance.properties.length">
-        <div class="alert alert-info">{{'views.alerts.notDefined' | translate: '{term: constants.props}'}}</div>
-      </div>
-    </div>
-  </div>
-
-  <div class="col-sm-12 ">
-    <button class="btn btn-primary pull-right left-margin save-button"
-            ng-class="{'disabled' : (form.instanceCreateForm.isSaving)}" ng-click="save()" type="submit">{{'common.controls.save' | translate}}</button>
-    <a href ng-click="cancel()" class="btn btn-default pull-right cancel-button">{{'common.controls.cancel' | translate}}</a>
-  </div>
-
-</form>

+ 16 - 21
ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/edit.html

@@ -107,9 +107,8 @@
         <div class="form-group">
           <div class="col-sm-offset-3 col-sm-10">
             <div class="checkbox">
-              <label>
-                <input type="checkbox" ng-model="settings.visible" ng-class="instancevisibility-input"> {{'views.visible' | translate}}
-              </label>
+              <input type="checkbox" class="form-control" ng-model="settings.visible" id="visible" ng-class="instancevisibility-input">
+              <label for="visible">{{'views.visible' | translate}}</label>
             </div>
           </div>
         </div>
@@ -173,9 +172,8 @@
   </div>
   <div class="panel-body property-form" popover="{{clusterConfigurableErrorMsg}}" popover-trigger="mouseenter">
     <div class="checkbox">
-      <label>
-        <input type="radio" ng-model="data.clusterType" ng-change="enableLocalCluster()" ng-disabled="!clusterConfigurable || editConfigurationDisabled || noLocalClusterAvailible" value="LOCAL_AMBARI" class="visibilityCheckbox"> {{'views.localCluster' | translate}}
-      </label>
+      <input type="radio" id="local-cluster" ng-model="data.clusterType" ng-change="enableLocalCluster()" ng-disabled="!clusterConfigurable || editConfigurationDisabled || noLocalClusterAvailible" value="LOCAL_AMBARI" class="visibilityCheckbox form-control">
+      <label for="local-cluster">{{'views.localCluster' | translate}}</label>
     </div>
     <div class="form-horizontal property-form">
       <div class="form-group">
@@ -189,9 +187,8 @@
     </div>
     <p>&nbsp</p>
       <div class="checkbox">
-        <label>
-          <input type="radio" ng-model="data.clusterType" ng-change="enableLocalCluster()" ng-disabled="!clusterConfigurable || editConfigurationDisabled || noRemoteClusterAvailible" value="REMOTE_AMBARI" class="visibilityCheckbox"> {{'views.remoteCluster' | translate}}
-        </label>
+        <input type="radio" id="remote-cluster" ng-model="data.clusterType" ng-change="enableLocalCluster()" ng-disabled="!clusterConfigurable || editConfigurationDisabled || noRemoteClusterAvailible" value="REMOTE_AMBARI" class="visibilityCheckbox form-control">
+        <label for="remote-cluster">{{'views.remoteCluster' | translate}}</label>
       </div>
       <div class="form-horizontal property-form">
         <div class="form-group">
@@ -205,15 +202,14 @@
       </div>
       <p>&nbsp</p>
     <div class="checkbox" ng-hide="isConfigurationEmpty">
-      <label>
-        <input type="radio"
-         ng-model="data.clusterType"
-         ng-disabled="editConfigurationDisabled"
-         value="NONE"
-         ng-change="disableLocalCluster()"
-         class="visibilityCheckbox">
-        {{'views.custom' | translate}}
-      </label>
+      <input type="radio"
+             id="custom-view"
+             ng-model="data.clusterType"
+             ng-disabled="editConfigurationDisabled"
+             value="NONE"
+             ng-change="disableLocalCluster()"
+             class="visibilityCheckbox">
+      <label for="custom-view">{{'views.custom' | translate}}</label>
     </div>
   </div>
   <div class="panel-body edit-view-custom-wrap">
@@ -289,9 +285,8 @@
       <div class="col-sm-offset-2 col-sm-10">
         <div class="checkbox col-sm-12" ng-repeat="key in permissionRoles">
           <div ng-init="i18nKey = 'views.clusterPermissions.' + key.split('.').join('').toLowerCase()">
-            <label>
-              <input type="checkbox" ng-model="permissionsEdit['VIEW.USER']['ROLE'][key]"> {{i18nKey | translate}}
-            </label>
+            <input ng-attr-id="{{i18nKey}}" type="checkbox" class="form-control" ng-model="permissionsEdit['VIEW.USER']['ROLE'][key]">
+            <label ng-attr-for="{{i18nKey}}">{{i18nKey | translate}}</label>
           </div>
         </div>
         <a href ng-click="checkAllRoles()">{{'common.controls.checkAll' | translate}}</a> | <a href ng-click="clearAllRoles()">{{'common.controls.clearAll' | translate}}</a>

+ 0 - 110
ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/listTable.html

@@ -1,110 +0,0 @@
-<!--
-* 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.
--->
-
-<div class="views-list-table">
-    <div class="clearfix">
-        <ol class="breadcrumb pull-left">
-            <li class="active">{{'common.views' | translate}}</li>
-            <button ng-click="reloadViews()"
-                    class="btn btn-xs">
-                <i class="glyphicon glyphicon-refresh"></i>
-            </button>
-        </ol>
-        <div class="pull-right col-sm-4">
-            <div class="input-group search-container">
-                <input type="text" class="form-control search-input" placeholder="{{'common.search' | translate}}" ng-model="viewsFilter" ng-change="getFilteredViews()">
-                <button type="button" class="close clear-search" ng-show="viewsFilter" ng-click="viewsFilter=''; getFilteredViews()"><span aria-hidden="true">&times;</span><span class="sr-only">{{"common.controls.close" | translate}}</span></button>
-        <span class="input-group-addon">
-          <span class="glyphicon glyphicon-search"></span>
-        </span>
-            </div>
-        </div>
-    </div>
-    <hr>
-    <div class="row">
-        <div class="col-sm-3 padding-left-30"><h4>{{'views.viewName' | translate}}</h4></div>
-        <div class="col-sm-3"><h4>{{'views.instances' | translate}}</h4></div>
-        <div class="col-sm-6"><h4></h4></div>
-    </div>
-    <accordion close-others="false">
-        <accordion-group ng-repeat="view in filteredViews" is-open="view.isOpened">
-            <accordion-heading>
-                <div class="row">
-                    <div class="col-sm-4">
-                        <i class="glyphicon glyphicon-chevron-right" ng-class="{'opened': view.isOpened}"></i>
-                        {{view.view_name}}
-                    </div>
-                    <div class="col-sm-3">
-            <span ng-repeat="(version, vData) in view.versions">
-              {{version}}
-                <span ng-switch="vData.status">
-                  <span ng-switch-when="PENDING" class="viewstatus pending" ng-switch-when="true" tooltip="{{'views.pending' | translate}}"></span>
-                  <div class="viewstatus deploying" ng-switch-when="DEPLOYING" tooltip="{{'views.deploying' | translate}}">
-                      <div class="rect1"></div>
-                      <div class="rect2"></div>
-                      <div class="rect3"></div>
-                  </div>
-                  <span ng-switch-when="DEPLOYED">({{vData.count}})</span>
-                  <span ng-switch-when="ERROR" tooltip="{{'views.alerts.deployError' | translate}}"><i class="fa fa-exclamation-triangle"></i></span>
-                </span>
-              {{$last ? '' : ', '}}
-            </span>
-                    </div>
-                    <div class="col-sm-6">{{view.description}}</div>
-                </div>
-            </accordion-heading>
-            <table class="table instances-table">
-                <tbody>
-                <tr ng-repeat="instance in view.instances">
-                    <td class="col-sm-1"></td>
-                    <td class="col-sm-5">
-                        <a href="#/views/{{view.view_name}}/versions/{{instance.ViewInstanceInfo.version}}/instances/{{instance.ViewInstanceInfo.instance_name}}/edit" class="instance-link">{{instance.label}}</a>
-                    </td>
-                    <td class="col-sm-5">{{instance.ViewInstanceInfo.version}}</td>
-                    <td class="col-sm-5 " ><div class="description-column" tooltip="{{instance.ViewInstanceInfo.description}}">{{instance.ViewInstanceInfo.description || 'No description'}}</div>
-                    </td>
-                    <td class="col-sm-1">
-                        <a class="instance-link ng-scope ng-binding" href="#/views/{{view.view_name}}/versions/{{instance.ViewInstanceInfo.version}}/instances/{{instance.ViewInstanceInfo.instance_name}}/clone"><i class="fa fa-copy"></i></a>
-                    </td>
-                    <td class="col-sm-1">
-                        <a class="instance-link ng-scope ng-binding" href ng-click="deleteInstance(instance)"><i class="fa fa-trash-o"></i></a>
-                    </td>
-                </tr>
-                </tbody>
-                <tfoot>
-                <tr>
-                    <td class="col-sm-4"></td>
-                    <td class="col-sm-3 padding-left-30">
-                        <a tooltip="{{view.canCreateInstance ? '' : constants.unable}}" class="btn btn-default createisntance-btn {{view.canCreateInstance ? '' : 'disabled'}}" href ng-click="gotoCreate(view.view_name, view.canCreateInstance);"><span class="glyphicon glyphicon-plus"></span> {{'views.create' | translate}}</a>
-                    </td>
-                    <td class="col-sm-3"></td>
-                    <td class="col-sm-3">
-                    </td>
-                </tr>
-                </tfoot>
-            </table>
-        </accordion-group>
-        <div ng-if="isLoadingViews" class="spinner-container">
-          <i class="fa fa-2x fa-spinner fa-spin" aria-hidden="true"></i>
-        </div>
-        <div class="alert alert-info" ng-show="views && !filteredViews.length && !isLoadingViews">
-            {{'common.alerts.nothingToDisplay' | translate: '{term: constants.views}'}}
-        </div>
-
-    </accordion>
-</div>

+ 0 - 117
ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/listUrls.html

@@ -1,117 +0,0 @@
-<!--
-* 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.
--->
-
-<div class="views-urls-table" data-ng-init="initViewUrls()">
-
-
-    <div class="clearfix">
-        <ol class="breadcrumb pull-left">
-            <li class="active">{{'common.viewUrls' | translate}}</li>
-        </ol>
-        <div class="pull-right top-margin-4">
-            <div class="tooltip-wrapper"  tooltip="{{(createUrlDisabled)? ('urls.noViewInstances' | translate) : ''}}">
-            <link-to ng-disabled="createUrlDisabled" route="views.createViewUrl" class="btn btn-primary createuser-btn"><span class="glyphicon glyphicon-plus"></span> {{'urls.createNewUrl' | translate}}</link-to>
-        </div>
-        </div>
-    </div>
-    <hr>
-    <table class="table table-striped table-hover">
-        <thead>
-        <tr class="fix-bottom">
-
-            <th class="fix-bottom col-md-2">
-                <span>{{'urls.name' | translate}}</span>
-            </th>
-            <th class="fix-bottom col-md-3">
-                <span>{{'urls.url' | translate}}</span>
-            </th>
-            <th class="fix-bottom col-md-2">
-                <span >{{'urls.view' | translate}}</span>
-            </th>
-            <th class="fix-bottom col-md-2">
-                <span>{{'urls.viewInstance' | translate}}</span>
-            </th>
-        </tr>
-
-        <tr>
-
-            <th class="fix-top">
-                <div class="search-container">
-                    <input type="text" class="form-control namefilter" placeholder="{{'common.any' | translate}}" ng-model="urlNameFilter" ng-change="resetPagination()">
-                    <button type="button" class="close clearfilter" ng-show="urlNameFilter" ng-click="urlNameFilter=''; resetPagination()"><span class="pull-right" aria-hidden="true">&times;</span><span class="sr-only">{{'common.controls.close' | translate}}</span></button>
-                    </div>
-            </th>
-            <th class="fix-top">
-                <div class="search-container">
-                    <input type="text" class="form-control namefilter" placeholder="{{'common.any' | translate}}" ng-model="urlSuffixfilter" ng-change="resetPagination()">
-                    <button type="button" class="close clearfilter" ng-show="urlSuffixfilter" ng-click="urlSuffixfilter=''; resetPagination()"><span class="pull-right" aria-hidden="true">&times;</span><span class="sr-only">{{'common.controls.close' | translate}}</span></button>
-                </div>
-            </th>
-            <th class="fix-top">
-                <select class="form-control typefilter v-small-input"
-                        ng-model="instanceTypeFilter"
-                        ng-options="item.label for item in typeFilterOptions"
-                        ng-change="resetPagination()">
-                </select>
-            </th>
-            <th class="fix-top">
-            </th>
-        </tr>
-
-        </thead>
-        <tbody>
-        <tr ng-repeat="url in urls.items">
-
-            <td>
-                <a href="#/urls/edit/{{url.ViewUrlInfo.url_name}}">{{url.ViewUrlInfo.url_name}}</a>
-            </td>
-            <td>
-                <a target="_blank" href="{{fromSiteRoot('/#/main/view/' + url.ViewUrlInfo.view_instance_common_name + '/' + url.ViewUrlInfo.url_suffix)}}">/main/view/{{url.ViewUrlInfo.view_instance_common_name}}/{{url.ViewUrlInfo.url_suffix}}
-                    &nbsp;<i class="fa fa-external-link" aria-hidden="true"></i></a>
-
-            </td>
-            <td>
-                <span>{{url.ViewUrlInfo.view_instance_common_name}} {{"{"+url.ViewUrlInfo.view_instance_version+"}"}} </span>
-            </td>
-            <td>
-                <span>{{url.ViewUrlInfo.view_instance_name}}</span>
-            </td>
-
-        </tr>
-        </tbody>
-    </table>
-    <div ng-if="isLoadingUrls" class="spinner-container">
-      <i class="fa fa-2x fa-spinner fa-spin" aria-hidden="true"></i>
-    </div>
-    <div class="alert alert-info col-sm-12" ng-show="!urls.items.length && !isLoadingUrls">
-        {{'urls.noUrlsToDisplay'| translate}}
-    </div>
-    <div class="col-sm-12 table-bar">
-        <div class="pull-left filtered-info">
-            <span>{{'common.filterInfo' | translate: '{showed: tableInfo.showed, total: tableInfo.total, term: urs.urls}'}}</span>
-            <span ng-show="isNotEmptyFilter">- <a href ng-click="clearFilters()">{{'common.controls.clearFilters' | translate}}</a></span>
-        </div>
-        <div class="pull-right left-margin">
-            <pagination class="paginator" total-items="totalUrls" max-size="maxVisiblePages" items-per-page="urlsPerPage" ng-model="currentPage" ng-change="pageChanged()"></pagination>
-        </div>
-        <div class="pull-right">
-            <select class="form-control" ng-model="urlsPerPage" ng-change="urlsPerPageChanged()" ng-options="currOption for currOption in [10, 25, 50, 100]"></select>
-        </div>
-    </div>
-
-</div>

+ 220 - 92
ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/modals/create.html

@@ -15,110 +15,238 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 -->
-<form class="form-horizontal" role="form" name="form.instanceCreateForm" novalidate>
+<form role="form" id="create-instance-form" name="form.instanceCreateForm" novalidate>
 <div class="modal-header">
-  <h3 class="modal-title">{{'views.createViewInstance' | translate}}</h3>
+  <h1 class="modal-title col-sm-8">
+    <span ng-if="!instanceClone">
+      {{'views.create' | translate}}
+    </span>
+    <span ng-if="instanceClone">
+      {{'views.clone' | translate}}
+    </span>
+  </h1>
+  <a class="close" aria-hidden="true" ng-click="cancel()">&times;</a>
 </div>
-<div class="modal-body createViewModal">
-  <div class="view-header">
-    <img src="http://placehold.it/64x64" alt="" class="icon-big">
-    <img src="http://placehold.it/32x32" alt="" class="icon-small">
-    <div class="description">
-      <h3>{{view.ViewVersionInfo.view_name}}</h3>
-      <span>{{view.ViewVersionInfo.label}} | Version: {{view.ViewVersionInfo.version}}</span>
+<div class="modal-body" ng-hide="isLoading">
+
+  <div class="row">
+
+    <div class="form-group col-sm-6" ng-class="{ 'has-error': form.instanceCreateForm.view.$error.required && form.instanceCreateForm.submitted }">
+      <label for="view">
+        {{'views.createInstance.selectView' | translate}}<span>*</span>&nbsp;
+        <i class="fa fa-question-circle" aria-hidden="true"></i>
+      </label>
+      <select
+        ng-disabled="instanceClone"
+        class="form-control"
+        id="view"
+        name="view"
+        ng-model="formData.view"
+        ng-change="updateVersionOptions()"
+        ng-options="item.label for item in viewOptions"
+        required>
+      </select>
+      <span class="help-block validation-block" ng-show='form.instanceCreateForm.view.$error.required && form.instanceCreateForm.submitted'>
+        {{'common.alerts.fieldRequired' | translate}}
+      </span>
+    </div>
+
+    <div class="form-group col-sm-6" ng-class="{ 'has-error': form.instanceCreateForm.version.$error.required && form.instanceCreateForm.submitted }">
+      <label for="version">
+        {{'views.createInstance.selectVersion' | translate}}<span>*</span>&nbsp;
+        <i class="fa fa-question-circle" aria-hidden="true"></i>
+      </label>
+      <select
+        ng-disabled="instanceClone"
+        class="form-control"
+        id="version"
+        name="version"
+        ng-model="formData.version"
+        ng-change="updateSettingsList()"
+        ng-options="item.label for item in versionOptions">
+      </select>
+      <span class="help-block validation-block" ng-show='form.instanceCreateForm.version.$error.required && form.instanceCreateForm.submitted'>
+        {{'common.alerts.fieldRequired' | translate}}
+      </span>
     </div>
   </div>
-  
-    <div class="panel panel-default">
-      <div class="panel-heading">
-        <h3 class="panel-title">{{'common.details' | translate}}</h3>
-      </div>
-      <div class="panel-body">
-        <div class="form-group" 
-        ng-class="{'has-error' : ( (form.instanceCreateForm.instanceNameInput.$error.required || form.instanceCreateForm.instanceNameInput.$error.pattern) && form.instanceCreateForm.submitted) || instanceExists }"
-        >
-          <label for="" class="control-labe col-sm-2">{{'views.instanceName' | translate}}</label>
-          <div class="col-sm-10">
-            <input type="text" class="form-control" name="instanceNameInput" ng-pattern="nameValidationPattern" required ng-model="instance.instance_name">
 
-            <div class="alert alert-danger no-margin-bottom top-margin" ng-show='form.instanceCreateForm.instanceNameInput.$error.required && form.instanceCreateForm.submitted'>
-              {{'common.alerts.fieldRequired' | translate}}
-            </div>
-            <div class="alert alert-danger no-margin-bottom top-margin" ng-show='form.instanceCreateForm.instanceNameInput.$error.pattern && form.instanceCreateForm.submitted'>
-              {{'common.alerts.noSpecialChars' | translate}}
-            </div>
-            <div class="alert alert-danger no-margin-bottom top-margin" ng-show='instanceExists'>
-              {{'views.alerts.instanceExists' | translate}}
-            </div>
-          </div>
-        </div>
-        <div class="form-group"
-        ng-class="{'has-error' : ( (form.instanceCreateForm.displayLabel.$error.required || form.instanceCreateForm.displayLabel.$error.pattern) && form.instanceCreateForm.submitted)}">
-          <label for="" class="control-labe col-sm-2">{{'common.displayLabel' | translate}}</label>
-          <div class="col-sm-10">
-            <input type="text" class="form-control" name="displayLabel" ng-model="instance.label" required ng-pattern="nameValidationPattern">
+  <div class="details-section">
+    <h2>{{'common.details' | translate}}</h2>
+    <div class="form-group"
+         ng-class="{ 'has-error': (form.instanceCreateForm.instanceName.$error.required || form.instanceCreateForm.instanceName.$error.pattern || isInstanceExists) && form.instanceCreateForm.submitted }">
+      <label for="instanceName">
+        {{'views.instanceName' | translate}}<span>*</span>&nbsp;
+        <i class="fa fa-question-circle" aria-hidden="true"></i>
+      </label>
+      <input type="text" class="form-control"
+             ng-model="formData.instanceName"
+             name="instanceName"
+             id="instanceName"
+             ng-change="checkIfInstanceExist()"
+             ng-pattern="nameValidationPattern" required>
+      <span class="help-block validation-block"
+            ng-show='form.instanceCreateForm.instanceName.$error.required && form.instanceCreateForm.submitted'>
+        {{'common.alerts.fieldRequired' | translate}}
+      </span>
+      <span class="help-block validation-block"
+            ng-show='form.instanceCreateForm.instanceName.$error.pattern && form.instanceCreateForm.submitted'>
+      {{'common.alerts.noSpecialChars' | translate}}
+    </span>
+      <span class="help-block validation-block" ng-show='isInstanceExists && form.instanceCreateForm.submitted'>
+        {{'views.alerts.instanceExists' | translate}}
+      </span>
+    </div>
 
-            <div class="alert alert-danger no-margin-bottom top-margin" ng-show='form.instanceCreateForm.displayLabel.$error.required && form.instanceCreateForm.submitted'>
-              {{'common.alerts.fieldRequired' | translate}}
-            </div>
-            <div class="alert alert-danger no-margin-bottom top-margin" ng-show='form.instanceCreateForm.displayLabel.$error.pattern && form.instanceCreateForm.submitted'>
-              {{'common.alerts.noSpecialChars' | translate}}
-            </div>
-          </div>
-        </div>
-      </div>
-      <div class="form-group">
-          <div class="col-sm-10 col-sm-offset-2">
-            <button class="btn btn-default" ng-click="isAdvancedClosed = !isAdvancedClosed">{{'views.advanced' | translate}}</button>
-          </div>
-      </div>
-      <div collapse="isAdvancedClosed">
-        <div class="form-group">
-          <div class="col-sm-10 col-sm-offset-2">
-            <div class="checkbox">
-              <label>
-                <input type="checkbox" ng-model='instance.visible'> {{'views.visible' | translate}}
-              </label>
-            </div>
-          </div>
-        </div>
-        <div class="form-group">
-          <div class="col-sm-10 col-sm-offset-2">
-            <label for="" class="control-label col-sm-2">{{'views.icon' | translate}}</label>
-            <div class="col-sm-10">
-              <input type="text" class="form-control" name="iconUrl" ng-model="instance.icon_path">
-            </div>
-          </div>
-        </div>
-        <div class="form-group">
-          <div class="col-sm-10 col-sm-offset-2">
-            <label for="" class="control-label col-sm-2">{{'views.icon64' | translate}}</label>
-            <div class="col-sm-10">
-              <input type="text" class="form-control" name="icon64Url" ng-model="instance.icon64_path">
-            </div>
-          </div>
-        </div>
-      </div>
+    <div class="form-group" ng-class="{ 'has-error': form.instanceCreateForm.displayName.$error.required && form.instanceCreateForm.submitted }">
+      <label for="displayName">
+        {{'views.displayName' | translate}}<span>*</span>&nbsp;
+        <i class="fa fa-question-circle" aria-hidden="true"></i>
+      </label>
+      <input type="text" class="form-control" required
+             name="displayName"
+             ng-model="formData.displayName"
+             id="displayName">
+      <span class="help-block validation-block" ng-show='form.instanceCreateForm.displayName.$error.required && form.instanceCreateForm.submitted'>
+        {{'common.alerts.fieldRequired' | translate}}
+      </span>
     </div>
 
-    <div class="panel panel-default">
-      <div class="panel-heading">
-        <h3 class="panel-title">{{'views.configuration' | translate}}</h3>
-      </div>
-      <div class="panel-body">
-      <div class="form-group" ng-repeat="parameter in instance.properties"
-        ng-class="{'has-error' : (form.instanceCreateForm[parameter.name].$error.required && form.instanceCreateForm.submitted)}" >
-        <label for="" class="col-sm-3 control-label">{{parameter.description}}</label>
-        <div class="col-sm-9">
-          <input type="text" class="form-control"  name="{{parameter.name}}" ng-required="parameter.required" ng-model="parameter.value">
-          <div class="alert alert-danger no-margin-bottom top-margin" ng-show='form.instanceCreateForm[parameter.name].$error.required && form.instanceCreateForm.submitted'>
-            {{'common.alerts.fieldRequired' | translate}}
-          </div>
+    <div class="form-group" ng-class="{ 'has-error': form.instanceCreateForm.description.$error.required && form.instanceCreateForm.submitted }">
+      <label for="description">
+        {{'views.description' | translate}}<span>*</span>&nbsp;
+        <i class="fa fa-question-circle" aria-hidden="true"></i>
+      </label>
+      <input type="text" class="form-control" required
+             name="description"
+             ng-model="formData.description"
+             id="description">
+      <span class="help-block validation-block" ng-show='form.instanceCreateForm.description.$error.required && form.instanceCreateForm.submitted'>
+        {{'common.alerts.fieldRequired' | translate}}
+      </span>
+    </div>
+
+    <div class="form-group checkbox">
+      <input type="checkbox" class="form-control"
+             name="visible"
+             ng-model="formData.visible"
+             id="visible">
+      <label for="visible">
+        {{'views.visible' | translate}}
+        <i class="fa fa-question-circle" aria-hidden="true"></i>
+      </label>
+    </div>
+  </div>
+
+  <div class="settings-section" ng-show="nonClusterSettingsCount">
+    <h2>{{'views.settings' | translate}}</h2>
+    <div class="form-group"
+         ng-repeat="parameter in formData.settings | filter: { clusterConfig: false }"
+         ng-class="{ 'has-error': (form.instanceCreateForm[parameter.name].$error.required && form.instanceCreateForm.submitted) || form.instanceCreateForm[parameter.name].validationError }">
+      <label ng-attr-for="{{parameter.name}}">
+        {{parameter.label || parameter.displayName}}{{parameter.required ? '*' : ''}}
+      </label>
+      <input class="form-control"
+             type="{{parameter.masked ? 'password' : 'text'}}"
+             ng-required="parameter.required"
+             ng-change="form.instanceCreateForm[parameter.name].validationError=''"
+             ng-attr-name="{{parameter.name}}"
+             popover="{{parameter.description}}"
+             popover-title="{{parameter.name}}"
+             popover-trigger="mouseenter"
+             placeholder="{{parameter.placeholder}}"
+             ng-model="parameter.value"
+             ng-attr-id="{{parameter.name}}">
+      <span class="help-block validation-block" ng-show='form.instanceCreateForm[parameter.name].$error.required && form.instanceCreateForm.submitted'>
+        {{'common.alerts.fieldRequired' | translate}}
+      </span>
+      <span class="help-block validation-block" ng-show='form.instanceCreateForm[parameter.name].validationError'>
+        {{form.instanceCreateForm[parameter.name].validationMessage}}
+      </span>
+    </div>
+  </div>
+
+  <div class="cluster-type-section">
+    <h2>{{'views.clusterConfiguration' | translate}}</h2>
+    <div class="form-group">
+      <label for="clusterType">
+        {{'views.createInstance.clusterType' | translate}}?&nbsp;
+        <i class="fa fa-question-circle" aria-hidden="true"></i>
+      </label>
+      <div>
+        <div class="btn-group" role="group" id="clusterType">
+          <button type="button" class="btn btn-default"
+                  ng-class="clusterType === 'LOCAL_AMBARI' && 'active'"
+                  ng-click="switchClusterType('LOCAL_AMBARI')">
+            {{'common.local' | translate}}
+          </button>
+          <button type="button" class="btn btn-default"
+                  ng-class="clusterType === 'REMOTE_AMBARI' && 'active'"
+                  ng-click="switchClusterType('REMOTE_AMBARI')">
+            {{'common.remote' | translate}}
+          </button>
+          <button type="button" class="btn btn-default"
+                  ng-if="clusterSettingsCount && clusterConfigurable"
+                  ng-class="clusterType === 'NONE' && 'active'"
+                  ng-click="switchClusterType('NONE')">
+            {{'views.custom' | translate}}
+          </button>
         </div>
       </div>
+    </div>
+    <div class="row">
+      <div class="form-group col-sm-6" ng-class="{ 'has-error': form.instanceCreateForm.clusterName.$error.required && form.instanceCreateForm.submitted }">
+        <label for="clusterName">
+          {{'views.clusterName' | translate}}<span>*</span>&nbsp;
+          <i class="fa fa-question-circle" aria-hidden="true"></i>
+        </label>
+        <select
+          ng-required="clusterType !== 'NONE'"
+          ng-disabled="clusterType === 'NONE'"
+          name="clusterName"
+          ng-options="item.label for item in clusterOptions"
+          class="form-control"
+          ng-model="formData.clusterName"
+          id="clusterName">
+        </select>
+        <span class="help-block validation-block" ng-show='form.instanceCreateForm.clusterName.$error.required && form.instanceCreateForm.submitted'>
+        {{'common.alerts.fieldRequired' | translate}}
+      </span>
+      </div>
+    </div>
+    <div class="cluster-configurations-section" ng-show="clusterSettingsCount && clusterConfigurable">
+      <div class="form-group"
+           ng-repeat="parameter in formData.settings | filter: { clusterConfig: true }"
+           ng-class="{ 'has-error': (form.instanceCreateForm[parameter.name].$error.required && form.instanceCreateForm.submitted) || form.instanceCreateForm[parameter.name].validationError }">
+        <label ng-attr-for="{{parameter.name}}">
+          {{parameter.label || parameter.displayName}}{{parameter.required ? '*' : ''}}
+        </label>
+        <input class="form-control"
+               ng-disabled="clusterType !== 'NONE'"
+               type="{{parameter.masked ? 'password' : 'text'}}"
+               ng-required="clusterType === 'NONE' && parameter.required"
+               ng-change="form.instanceCreateForm[parameter.name].validationError=''"
+               ng-attr-name="{{parameter.name}}"
+               popover="{{parameter.description}}"
+               popover-title="{{parameter.name}}"
+               popover-trigger="mouseenter"
+               placeholder="{{parameter.placeholder}}"
+               ng-model="parameter.value"
+               ng-attr-id="{{parameter.name}}">
+        <span class="help-block validation-block" ng-show="form.instanceCreateForm[parameter.name].$error.required && form.instanceCreateForm.submitted && (clusterType === 'NONE')">
+        {{'common.alerts.fieldRequired' | translate}}
+      </span>
+        <span class="help-block validation-block" ng-show='form.instanceCreateForm[parameter.name].validationError'>
+        {{form.instanceCreateForm[parameter.name].validationMessage}}
+      </span>
       </div>
     </div>
-  
+  </div>
+
+
+</div>
+<div ng-if="isLoading" class="spinner-container">
+  <i class="fa fa-2x fa-spinner fa-spin" aria-hidden="true"></i>
 </div>
 <div class="modal-footer">
   <button class="btn btn-default" ng-click="cancel()">{{'common.controls.cancel' | translate}}</button>

+ 0 - 138
ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/modals/edit.html

@@ -1,138 +0,0 @@
-<!--
-* 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.
--->
-
-<div class="modal-header">
-  <h3 class="modal-title">{{'views.edit' | translate}} {{instance.ViewInstanceInfo.view_name}}: {{instance.ViewInstanceInfo.label}}</h3>
-</div>
-<div class="modal-body">
-  <div class="panel panel-default">
-    <div class="panel-heading clearfix">
-      <h3 class="panel-title pull-left">{{'views.settings' | translate}}</h3>
-      <div class="pull-right">
-        <a href ng-click="edit.editSettingsDisabled = !edit.editSettingsDisabled" ng-show="edit.editSettingsDisabled"> <span class="glyphicon glyphicon-cog"></span> {{'views.edit' | translate}}</a>
-      </div>
-    </div>
-    <div class="panel-body">
-      <form class="form-horizontal">
-        <fieldset ng-disabled="edit.editSettingsDisabled">
-          <div class="form-group">
-            <label for="" class="col-sm-2 control-label">{{'views.instanceId' | translate}}</label>
-            <label for="" class="col-sm-10 control-label text-left">{{instance.ViewInstanceInfo.instance_name}}</label>
-          </div>
-          <div class="form-group">
-            <label for="" class="col-sm-2 control-label">{{'views.displayName' | translate}}</label>
-            <div class="col-sm-10"><input type="text" class="form-control" placeholder="{{'views.displayName' | translate}}" ng-model="settings.label"></div>
-          </div>
-          <div class="form-group">
-            <div class="col-sm-offset-2 col-sm-10">
-              <div class="checkbox">
-                <label>
-                  <input type="checkbox" ng-model="settings.visible"> {{'views.visible' | translate}}
-                </label>
-              </div>
-            </div>
-          </div>
-          <div class="form-group" ng-hide="edit.editSettingsDisabled">
-            <div class="col-sm-offset-2 col-sm-10">
-              <button class="btn btn-default pull-right left-margin" ng-click="cancelSettings()">{{'common.controls.cancel' | translate}}</button>
-              <button class="btn btn-primary pull-right" ng-click="saveSettings()">{{'common.controls.save' | translate}}</button>
-            </div>
-          </div>
-        </fieldset>
-      </form>
-    </div>
-  </div>
-
-  <div class="panel panel-default views-permissions-panel" style="">
-    <div class="panel-heading clearfix">
-      <h3 class="panel-title pull-left">{{'views.permissions' | translate}}</h3>
-      <div class="pull-right">
-        <a href ng-click="edit.editPermissionDisabled = !edit.editPermissionDisabled" ng-show="edit.editPermissionDisabled"> <span class="glyphicon glyphicon-cog"></span> {{'views.edit' | translate}}</a>
-      </div>
-    </div>
-    <div class="panel-body">
-      <form class="form-horizontal">
-        <div class="form-group">
-          <div class="col-sm-2"></div>
-          <label class="col-sm-5 control-label text-left">{{'common.users' | translate}}</label>
-          <label class="col-sm-5 control-label text-left">{{'common.groups' | translate}}</label>
-        </div>
-        <div class="form-group" ng-repeat="permission in permissions">
-          <label class="col-sm-2 control-label">{{permission.PermissionInfo.permission_name}}</label>
-          <div class="col-sm-5" ng-switch="edit.editPermissionDisabled">
-            <textarea name="" id="" cols="30" rows="4" class="form-control" ng-model="permissionsEdit[permission.PermissionInfo.permission_name].USER" ng-switch-when="false"></textarea>
-            <div class="well" ng-switch-when="true">
-              <span ng-repeat="user in permission.USER">
-                <link-to route="users.show" id="{{user}}">{{user}}</link-to>
-                <button type="button" class="close remove-button" 
-                  ng-click="removePermission(permission.name, 'USER', user)"><span aria-hidden="true">&times;</span><span class="sr-only">{{'common.controls.close' | translate}}</span></button>
-                {{$last ? '' :', '}}
-              </span>
-            </div>
-          </div>
-          <div class="col-sm-5" ng-switch="edit.editPermissionDisabled">
-            <textarea name="" id="" cols="30" rows="4" class="form-control" ng-model="permissionsEdit[permission.PermissionInfo.permission_name].GROUP" ng-switch-when="false"></textarea>
-            <div class="well" ng-switch-when="true">
-              <span ng-repeat="group in permission.GROUP">
-                <link-to route="groups.edit" id="{{group}}" >{{group}}</link-to>
-                <button type="button" class="close remove-button" 
-                  ng-click="removePermission(permission.name, 'GROUP', group)"><span aria-hidden="true">&times;</span><span class="sr-only">{{'common.controls.close' | translate}}</span></button>
-                {{$last ? '' :', '}}
-              </span>
-            </div>
-          </div>
-        </div>
-        <div class="form-group" ng-hide="edit.editPermissionDisabled">
-          <div class="col-sm-offset-2 col-sm-10">
-            <button class="btn btn-default pull-right left-margin" ng-click="cancelPermissions()">{{'common.controls.cancel' | translate}}</button>
-            <button class="btn btn-primary pull-right" ng-click="savePermissions()">{{'common.controls.save' | translate}}</button>
-          </div>
-        </div>
-      </form>
-        
-    </div>
-  </div>
-
-  <div class="panel panel-default">
-    <div class="panel-heading clearfix">
-      <h3 class="panel-title pull-left">{{'views.configuration' | translate}}</h3>
-      <div class="pull-right">
-        <a href ng-click="edit.editConfigurationDisabled = !edit.editConfigurationDisabled" ng-show="edit.editConfigurationDisabled"> <span class="glyphicon glyphicon-cog"></span> {{'views.edit' | translate}}</a>
-      </div>
-    </div>
-    <div class="panel-body">
-      <form action="" class="form-horizontal">
-        <fieldset ng-disabled="edit.editConfigurationDisabled">
-          <div class="form-group" ng-repeat="(propertyName, propertyValue) in configuration">
-            <label for="" class="control-label col-sm-3">{{propertyName}}</label>
-            <div class="col-sm-9"><input type="text" class="form-control" ng-model="configuration[propertyName]"></div>
-          </div>
-          <div class="form-group" ng-hide="edit.editConfigurationDisabled">
-            <div class="col-sm-offset-2 col-sm-10">
-              <button class="btn btn-default pull-right left-margin" ng-click="cancelConfiguration()">{{'common.controls.cancel' | translate}}</button>
-              <button class="btn btn-primary pull-right" ng-click="saveConfiguration()">{{'common.controls.save' | translate}}</button>
-            </div>
-          </div>
-        </fieldset>
-      </form>
-    </div>
-  </div>
-</div>
-<div class="modal-footer">
-  <button class="btn btn-default" ng-click="close()">{{'common.controls.save' | translate}}</button>
-</div>

+ 151 - 0
ambari-admin/src/main/resources/ui/admin-web/app/views/ambariViews/viewsList.html

@@ -0,0 +1,151 @@
+<!--
+* 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.
+-->
+
+<div id="views-table">
+
+    <div class="clearfix">
+        <div class="pull-right">
+            <button ng-disabled="views.length === 0" ng-click="createInstance();" class="btn btn-default">
+                {{'views.create' | translate}}
+            </button>
+        </div>
+    </div>
+
+    <table class="table table-striped table-hover">
+        <thead>
+        <tr class="fix-bottom">
+            <th class="col-md-2">
+                <span>{{'common.name' | translate}}</span>
+            </th>
+            <th class="col-md-3">
+                <span>{{'urls.url' | translate}}</span>
+            </th>
+            <th class="col-md-2">
+                <span>{{'views.table.viewType' | translate}}</span>
+            </th>
+            <th class="col-md-2">
+                <span>{{'urls.viewInstance' | translate}}</span>
+            </th>
+            <th class="col-md-2 entity-actions">
+                <span>{{'common.actions' | translate}}</span>
+            </th>
+        </tr>
+        <tr class="fix-top">
+            <th>
+                <div class="search-container">
+                    <input type="text" class="form-control" placeholder="{{'common.any' | translate}}"
+                           ng-model="instanceNameFilter" ng-change="filterInstances()">
+                    <button type="button" class="close clearfilter" ng-show="instanceNameFilter"
+                            ng-click="instanceNameFilter=''; filterInstances()">
+                        <span aria-hidden="true">&times;</span>
+                        <span class="sr-only">{{'common.controls.close' | translate}}</span>
+                    </button>
+                </div>
+            </th>
+            <th>
+                <div class="search-container">
+                    <input type="text" class="form-control" placeholder="{{'common.any' | translate}}"
+                           ng-model="instanceUrlFilter" ng-change="filterInstances()">
+                    <button type="button" class="close clearfilter" ng-show="instanceUrlFilter"
+                            ng-click="instanceUrlFilter=''; filterInstances()">
+                        <span aria-hidden="true">&times;</span>
+                        <span class="sr-only">{{'common.controls.close' | translate}}</span>
+                    </button>
+                </div>
+            </th>
+            <th>
+                <select class="form-control typefilter v-small-input"
+                        ng-model="instanceTypeFilter"
+                        ng-options="item.label for item in typeFilterOptions"
+                        ng-change="filterInstances()">
+                </select>
+            </th>
+            <th></th>
+            <th></th>
+        </tr>
+        </thead>
+
+        <tbody>
+        <tr ng-repeat="instance in instances | filter : { isShowed: true }">
+            <td>
+                <span>{{instance.short_url_name}}</span>
+            </td>
+            <td>
+                <a target="_blank"
+                   href="{{fromSiteRoot('/#/main/view/' + instance.view_name + '/' + instance.short_url)}}">/main/view/{{instance.view_name}}/{{instance.short_url}}
+                    &nbsp;<i class="fa fa-external-link" aria-hidden="true"></i></a>
+            </td>
+            <td>
+                <span>{{instance.view_name}} {{"{"+instance.version+"}"}} </span>
+            </td>
+            <td>
+                <span>{{instance.instance_name}}</span>
+            </td>
+            <td class="entity-actions" ng-switch="instance.versionObj.status">
+                <span ng-switch-when="PENDING">
+                    <i class="viewstatus pending"></i>
+                    {{'views.pending' | translate}}
+                </span>
+                <span ng-switch-when="DEPLOYING">
+                    <div class="viewstatus deploying">
+                        <div class="rect1"></div>
+                        <div class="rect2"></div>
+                        <div class="rect3"></div>
+                    </div>
+                    {{'views.deploying' | translate}}
+                </span>
+
+                <span ng-switch-when="DEPLOYED">
+                    <a  href="#/views/{{instance.view_name}}/versions/{{instance.version}}/instances/{{instance.instance_name}}/edit">
+                        <i class="fa fa-pencil"></i>
+                    </a>
+                    <a href ng-click="cloneInstance(instance);">
+                        <i class="fa fa-copy"></i>
+                    </a>
+                    <a href ng-click="deleteInstance(instance)">
+                        <i class="fa fa-trash-o"></i>
+                    </a>
+                </span>
+                <span ng-switch-when="ERROR" class="error" tooltip="{{'views.alerts.deployError' | translate}}">
+                    <i class="fa fa-exclamation-triangle"></i>
+                    {{'common.error' | translate}}
+                </span>
+            </td>
+        </tr>
+        </tbody>
+    </table>
+    <div ng-if="isLoading" class="spinner-container">
+      <i class="fa fa-2x fa-spinner fa-spin" aria-hidden="true"></i>
+    </div>
+    <div class="alert empty-table-alert col-sm-12" ng-show="!tableInfo.filtered && !isLoading">
+        {{'views.emptyTable'| translate}}
+    </div>
+    <div class="col-sm-12 table-bar" ng-show="instances.length >= minInstanceForPagination">
+        <div class="pull-left filtered-info">
+            <span>{{'common.filterInfo' | translate: '{showed: tableInfo.showed, total: tableInfo.filtered, term: urs.urls}'}}</span>
+            <span ng-show="isNotEmptyFilter">- <a href ng-click="clearFilters()">{{'common.controls.clearFilters' | translate}}</a></span>
+        </div>
+        <div class="pull-right left-margin">
+            <pagination class="paginator" total-items="tableInfo.filtered" max-size="maxVisiblePages" items-per-page="instancesPerPage" ng-model="currentPage" ng-change="pageChanged()"></pagination>
+        </div>
+        <div class="pull-right">
+            <select class="form-control" ng-model="instancesPerPage" ng-change="resetPagination()" ng-options="currOption for currOption in [10, 25, 50, 100]"></select>
+        </div>
+    </div>
+
+</div>

+ 7 - 7
ambari-admin/src/main/resources/ui/admin-web/app/views/authentication/main.html

@@ -28,9 +28,11 @@
   <div class="form-horizontal">
     <div class="form-group col-sm-12">{{'authentication.description' | translate}}</div>
     <div class="form-group">
-      <label class="control-label col-sm-4">{{'authentication.ldap' | translate}}</label>
+      <label class="switch-inline-label col-sm-4">{{'authentication.ldap' | translate}}</label>
       <span class="col-sm-8">
-        <toggle-switch model="isLDAPEnabled" ng-disabled="isRequestRunning" on-label="{{'authentication.on' | translate}}" off-label="{{'authentication.off' | translate}}" class="switch-primary" data-off-color="danger" on-change="toggleAuthentication()"></toggle-switch>
+        <toggle-switch model="isLDAPEnabled" ng-disabled="isRequestRunning" class="switch-success" data-off-color="danger" on-change="toggleAuthentication()"></toggle-switch>
+        <span ng-if="isLDAPEnabled" class="switch-option-label">{{'authentication.on' | translate}}</span>
+        <span ng-if="!isLDAPEnabled" class="switch-option-label">{{'authentication.off' | translate}}</span>
       </span>
     </div>
   </div>
@@ -58,10 +60,8 @@
         </div>
       </div>
       <div class="form-group">
+        <input type="checkbox" id="ssl" ng-model="connectivity.ssl" class="col-sm-8">
         <label for="ssl" class="control-label col-sm-4">{{'authentication.connectivity.ssl' | translate}}</label>
-        <div class="col-sm-8">
-          <input type="checkbox" id="ssl" ng-model="connectivity.ssl">
-        </div>
       </div>
       <div class="form-group">
         <label for="trust-store" class="control-label col-sm-4">{{'authentication.connectivity.trustStore.label' | translate}}</label>
@@ -121,12 +121,12 @@
       <form class="form-horizontal" ng-submit="detectAttributes()">
         <div class="form-group col-sm-12">{{'authentication.attributes.detection.label' | translate}}</div>
         <div class="form-group">
+          <input type="radio" id="manual-detection" name="detection" ng-model="attributes.detection" ng-disabled="isAttributeDetectionRunning" value="manual">
           <label for="manual-detection" class="col-sm-12">
-            <input type="radio" id="manual-detection" name="detection" ng-model="attributes.detection" ng-disabled="isAttributeDetectionRunning" value="manual">
             {{'authentication.attributes.detection.options.manual' | translate}}
           </label>
+          <input type="radio" id="auto-detection" name="detection" ng-model="attributes.detection" ng-disabled="isAttributeDetectionRunning" value="auto">
           <label for="auto-detection" class="col-sm-12">
-            <input type="radio" id="auto-detection" name="detection" ng-model="attributes.detection" ng-disabled="isAttributeDetectionRunning" value="auto">
             {{'authentication.attributes.detection.options.auto' | translate}}
           </label>
         </div>

+ 87 - 0
ambari-admin/src/main/resources/ui/admin-web/app/views/clusters/clusterInformation.html

@@ -0,0 +1,87 @@
+<!--
+* 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.
+-->
+
+<div id="cluster-information">
+  <div ng-show="cluster.Clusters.provisioning_state !== 'INSTALLED'">
+    <div class="welcome-header">
+      <h1>{{'main.title' | translate}}</h1>
+      <span>{{'main.noClusterDescription' | translate}}</span>
+    </div>
+    <div class="create-cluster-section">
+      <h2>{{'main.createCluster.title' | translate}}</h2>
+      <div>
+        <span>
+          {{'main.createCluster.description' | translate}}
+        </span>
+      </div>
+      <div><i class="fa fa-cloud" aria-hidden="true"></i></div>
+      <div>
+        <a href="{{fromSiteRoot('/#/installer/step0')}}" class="btn btn-primary">
+          {{'main.createCluster.launchInstallWizard' | translate}}
+        </a>
+      </div>
+    </div>
+  </div>
+
+  <div ng-show="cluster.Clusters.provisioning_state === 'INSTALLED'">
+    <form class="row" name="editClusterNameForm" ng-submit="confirmClusterNameChange()">
+      <div class="form-group col-xs-4 cluster-name"
+           ng-class="{'has-error': editClusterNameForm.clusterName.$invalid}">
+        <label for="clusterName">{{'views.clusterName' | translate}}*</label>
+        <input type="text"
+               class="form-control"
+               id="clusterName"
+               name="clusterName"
+               ng-change="toggleSaveButton()"
+               ng-model="edit.clusterName"
+               required
+               autofocus
+               ng-pattern="/^\w*$/"
+               ng-maxlength="80"
+               tooltip="{{'common.renameClusterTip' | translate}}"
+               tooltip-trigger="focus"
+               tooltip-placement="bottom"
+               ng-class="{edited: isClusterNameEdited}">
+        <button
+          type="submit"
+          ng-class="{'disabled': editClusterNameForm.clusterName.$invalid}"
+          class="btn btn-default pull-right"
+          ng-show="isClusterNameEdited">
+          {{'common.controls.save' | translate}}
+        </button>
+      </div>
+    </form>
+    <div>
+      <div class="row dev-blueprint">
+        <div class="col-sm-11"><span>{{'clusters.devBlueprint' | translate}}</span></div>
+        <div class="col-sm-1">
+          <div class="btn btn-default pull-right" ng-click="downloadBlueprint()">{{"common.download" | translate}}
+          </div>
+        </div>
+      </div>
+      <textarea type="text"
+                rows="20"
+                class="form-control"
+                name="blueprint_text"
+                ng-model="blueprint"
+                ng-disabled="true"
+                ng-readonly="true">
+      </textarea>
+    </div>
+  </div>
+</div>

+ 0 - 63
ambari-admin/src/main/resources/ui/admin-web/app/views/clusters/manageAccess.html

@@ -1,63 +0,0 @@
-<!--
-* 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.
--->
-    
-<div class="cluster-manage-access-pane">
-  <div class="clearfix">
-    <ol class="breadcrumb pull-left">
-      <li class="active">{{clusterName}} {{'common.roles' | translate}}</li>
-    </ol>
-  </div>
-  <hr>
-  <div class="pull-right">
-    <div class="layout-switch-icon-wrapper">
-      <i class="glyphicon glyphicon-th-large layout-switch-icon"></i>
-      <p class="label-block">{{'common.blockViewLabel' | translate}}</p>
-    </div>
-    <div class="layout-switch-icon-wrapper disabled">
-      <i class="glyphicon glyphicon-list layout-switch-icon" ng-click="switchToList()" tooltip-html-unsafe="{{'clusters.switchToList' | translate}}"></i>
-      <p class="label-list">{{'common.listViewLabel' | translate}}</p>
-    </div>
-  </div>
-  <table class="table">
-    <thead>
-      <tr>
-        <th class="col-sm-2" width="20%">
-          <label>{{'common.roles' | translate}}</label>&nbsp;
-          <i class="glyphicon glyphicon-question-sign green-icon cursor-pointer" ng-click="showHelpPage()"></i>
-        </th>
-        <th class="col-sm-5" width="40%"><label>{{'clusters.assignRoles' | translate: '{term: getConstant("common.users")}'}}</label></th>
-        <th class="col-sm-5" width="40%"><label>{{'clusters.assignRoles' | translate: '{term: getConstant("common.groups")}'}}</label></th>
-      </tr>
-    </thead>
-    <tbody>
-      <tr ng-repeat="permission in permissions">
-        <td><label class="" tooltip="{{permission.PermissionInfo.permission_name}}">{{permission.PermissionInfo.permission_label}}</label></td>
-        <td>
-          <div class="" ng-switch="isEditMode">
-            <editable-list items-source="permissionsEdit[permission.PermissionInfo.permission_name].USER" resource-type="User" editable="true"></editable-list>
-          </div>
-        </td>
-        <td>
-          <div class="" ng-switch="isEditMode">
-            <editable-list items-source="permissionsEdit[permission.PermissionInfo.permission_name].GROUP" resource-type="Group" editable="true"></editable-list>
-          </div>
-        </td>
-      </tr>
-    </tbody>
-  </table>
-</div>

+ 0 - 102
ambari-admin/src/main/resources/ui/admin-web/app/views/clusters/userAccessList.html

@@ -1,102 +0,0 @@
-<!--
-* 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.
--->
-
-<div class="users-pane">
-  <div class="clearfix">
-    <ol class="breadcrumb pull-left">
-      <li class="active">{{clusterId}} {{'common.roles' | translate}}</li>
-    </ol>
-  </div>
-  <hr>
-  <div class="pull-right">
-    <div class="layout-switch-icon-wrapper disabled">
-      <i class="glyphicon glyphicon-th-large layout-switch-icon" ng-click="switchToBlock()" tooltip-html-unsafe="{{'clusters.switchToBlock' | translate}}"></i>
-      <p class="label-block">{{'common.blockViewLabel' | translate}}</p>
-    </div>
-    <div class="layout-switch-icon-wrapper">
-      <i class="glyphicon glyphicon-list layout-switch-icon"></i>
-      <p class="label-list">{{'common.listViewLabel' | translate}}</p>
-    </div>
-  </div>
-  <ul class="nav nav-pills">
-    <li ng-class="{'active': isUserActive}"><a ng-click="switchToUser()">{{'common.users' | translate}}</a></li>
-    <li ng-class="{'active': !isUserActive}"><a ng-click="switchToGroup()">{{'common.groups' | translate}}</a></li>
-  </ul>
-  <br/>
-  <table class="table table-striped table-hover">
-    <thead>
-    <tr>
-      <th class="role-name-column">
-        <div class="search-container">
-          <label for="">{{'common.name' | translate}}</label>
-          <input type="text" class="form-control namefilter" placeholder="{{'common.any' | translate}}" ng-model="currentNameFilter" ng-change="resetPagination()">
-          <button type="button" class="close clearfilter" ng-show="currentNameFilter" ng-click="currentNameFilter=''; resetPagination()">
-            <span aria-hidden="true">&times;</span><span class="sr-only">{{'common.controls.close' | translate}}</span>
-          </button>
-        </div>
-      </th>
-      <th>
-        <label for="">{{'clusters.role' | translate}}</label>&nbsp;
-        <i class="glyphicon glyphicon-question-sign green-icon cursor-pointer" ng-click="showHelpPage()"></i>
-        <select class="form-control statusfilter"
-                ng-model="currentRoleFilter"
-                ng-options="item.label for item in roleFilterOptions"
-                ng-change="resetPagination()">
-        </select>
-      </th>
-    </tr>
-    </thead>
-    <tbody>
-    <tr ng-repeat="user in users">
-      <td>
-        <a href="#/{{user.url}}">{{user.principal_name}}</a>
-      </td>
-      <td>
-        <div ng-show="!user.editable">{{user.permission_label}}</div>
-        <select class="form-control role-select" ng-show="user.editable" ng-model="user.permission_name"
-                ng-options="role.permission_name as role.permission_label for role in roleValueOptions">
-        </select>
-        <span ng-show="user.principal_type != $parent.currentTypeFilter.value">&nbsp;{{'common.fromGroupMark' | translate}}</span>
-        <span ng-show="user.permission_name != user.original_perm">
-          <button class="btn btn-default btn-xs cancel" ng-click="cancel(user)">
-            <span class="glyphicon glyphicon-remove cancel"></span>
-          </button>
-          <button class="btn btn-primary btn-xs" ng-click="save(user)">
-            <span class="glyphicon glyphicon-ok"></span>
-          </button>
-        </span>
-      </td>
-    </tr>
-    </tbody>
-  </table>
-  <div class="alert alert-info col-sm-12" ng-show="!users.length">
-    {{'common.alerts.nothingToDisplay' | translate: '{term: (isUserActive ? constants.users : constants.groups)}'}}
-  </div>
-  <div class="col-sm-12 table-bar">
-    <div class="pull-left filtered-info">
-      <span>{{'common.filterInfo' | translate: '{showed: tableInfo.showed, total: tableInfo.total, term: (isUserActive ? constants.users : constants.groups)}'}}</span>
-      <span ng-show="isNotEmptyFilter">- <a href ng-click="clearFilters()">{{'common.controls.clearFilters' | translate}}</a></span>
-    </div>
-    <div class="pull-right left-margin">
-      <pagination class="paginator" total-items="totalUsers" max-size="maxVisiblePages" items-per-page="usersPerPage" ng-model="currentPage" ng-change="pageChanged()"></pagination>
-    </div>
-    <div class="pull-right">
-      <select class="form-control" ng-model="usersPerPage" ng-change="usersPerPageChanges()" ng-options="currOption for currOption in [10, 25, 50, 100]"></select>
-    </div>
-  </div>
-</div>

+ 0 - 43
ambari-admin/src/main/resources/ui/admin-web/app/views/groups/create.html

@@ -1,43 +0,0 @@
-<!--
-* 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.
--->
-<ol class="breadcrumb">
-  <li><a href="#/groups">{{'common.groups' | translate}}</a></li>
-  <li class="active">{{'groups.createLocal' | translate}}</li>
-</ol>
-<hr>
-<form class="form-horizontal" role="form" novalidate name="form" autocomplete="off">
-  <div class="form-group" ng-class="{'has-error' : (form.group_name.$error.required || form.group_name.$error.pattern) && form.submitted}">
-    <label for="groupname" class="col-sm-2 control-label">{{'groups.name' | translate}}</label>
-    <div class="col-sm-10">
-      <input type="text" id="groupname" class="form-control groupname-input" name="group_name" placeholder="{{'groups.name' | translate}}" ng-model="group.group_name" required ng-pattern="/^([a-zA-Z0-9._\s]+)$/" autocomplete="off">
-      <div class="alert alert-danger top-margin" ng-show="form.group_name.$error.required && form.submitted">
-        {{'common.alerts.fieldIsRequired' | translate}}
-      </div>
-      <div class="alert alert-danger top-margin" ng-show="form.group_name.$error.pattern && form.submitted">
-        {{'common.alerts.onlySimpleChars' | translate}}
-      </div>
-    </div>
-  </div>
-  <div class="form-group">
-    <div class="col-sm-offset-2 col-sm-10">
-      <button class="btn btn-primary groupcreate-btn pull-right left-margin" ng-click="createGroup()">{{'common.controls.save' | translate}}</button>
-      <a href ng-click="cancel()" class="btn btn-default pull-right cancel-button">{{'common.controls.cancel' | translate}}</a>
-    </div>
-  </div>
-      
-</form>

+ 0 - 98
ambari-admin/src/main/resources/ui/admin-web/app/views/groups/edit.html

@@ -1,98 +0,0 @@
-<!--
-* 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.
--->
-  
-<div class="clearfix">
-  <ol class="breadcrumb pull-left">
-    <li><a href="#/groups">{{'common.groups' | translate}}</a></li>
-    <li class="active">{{group.group_name}}</li>
-  </ol>
-  <div class="pull-right top-margin-4">
-  <div ng-switch="group.group_type != 'LOCAL'">
-      <button ng-switch-when="true" class="btn disabled deletegroup-btn deleteuser-btn" tooltip="{{'common.cannotDelete' | translate: '{term: constants.group}'}}">{{'common.delete' | translate: '{term: constants.group}'}}</button>
-      <button ng-switch-when="false" class="btn btn-danger deletegroup-btn" ng-click="deleteGroup(group)">{{'common.delete' | translate: '{term: constants.group}'}}</button>
-    </div>
-      
-  </div>
-</div>
-<hr>
-<form class="form-horizontal group-edit" role="form" novalidate name="form" >
-  <div class="form-group">
-    <label for="" class="col-sm-2 control-label">{{'common.type' | translate}}</label>
-    <div class="col-sm-10">
-      <label for="" class="control-label">{{group.groupTypeName | translate}}</label>
-    </div>
-  </div>
-  <div class="form-group">
-    <label for="members" class="col-sm-2 control-label">{{group.groupTypeName | translate}} {{'groups.members' | translate}}</label>
-    <div class="col-sm-10">
-      <editable-list items-source="group.editingUsers" resource-type="User" editable="group.group_type == 'LOCAL'"></editable-list>
-    </div>
-  </div>
-
-  <div class="form-group">
-      <label for="" class="col-sm-2 control-label">{{'common.privileges' | translate}}</label>
-      <div class="col-sm-10">
-        <table class="table" ng-hide="hidePrivileges">
-          <thead>
-            <tr>
-              <th>{{'common.cluster' | translate}}</th>
-              <th>{{'common.clusterRole' | translate}}</th>
-            </tr>
-          </thead>
-          <tbody>
-            <tr ng-repeat="(name, privilege) in privileges.clusters">
-              <td>
-                <span class="glyphicon glyphicon-cloud"></span> 
-                <a href="#/clusters/{{name}}/manageAccess">{{name}}</a>
-              </td>
-              <td>
-                <span tooltip="{{item}}" ng-repeat="item in privilege">{{item | translate}}{{$last ? '' : ', '}}</span>
-              </td>
-            </tr>
-            <tr>
-              <td ng-show="noClusterPriv">{{'common.alerts.noPrivileges' | translate: '{term: constants.cluster}'}}</td>
-            </tr>
-          </tbody>
-          <thead class="view-permission-header">
-            <tr>
-              <th>{{'common.view' | translate}}</th>
-              <th>{{'common.viewPermissions' | translate}}</th>
-            </tr>
-          </thead>
-          <tbody>
-            <tr ng-repeat="(name, privilege) in privileges.views">
-              <td>
-                <span class="glyphicon glyphicon-th"></span>
-                <a href="#/views/{{privilege.view_name}}/versions/{{privilege.version}}/instances/{{name}}/edit">{{name}}</a>
-              </td>
-              <td>
-                <span tooltip="{{item}}" ng-repeat="item in privilege.privileges">{{item | translate}}{{$last ? '' : ', '}}</span>
-              </td>
-              <td>
-                <i class="fa fa-trash-o" aria-hidden="true" ng-click="removePrivilege(name, privilege);"></i>
-              </td>
-            </tr>
-            <tr>
-              <td ng-show="noViewPriv">{{'common.alerts.noPrivileges' | translate: '{term: constants.view}'}}</td>
-            </tr>
-          </tbody>
-        </table>
-        <div class="alert alert-info hide-soft" ng-class="{'visible' : !privileges}">{{'common.alerts.noPrivilegesDescription' | translate: '{term: constants.group.toLowerCase()}'}}</div>
-      </div>
-    </div>
-</form>

+ 0 - 126
ambari-admin/src/main/resources/ui/admin-web/app/views/leftNavbar.html

@@ -1,126 +0,0 @@
-<!--
-* 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.
--->
-<div class="left-navbar" xmlns="http://www.w3.org/1999/html">
-  <div class="panel panel-default">
-    <div class="panel-heading"><span class="glyphicon glyphicon-cloud"></span> {{'common.clusters' | translate}}</div>
-    <div class="panel-body">
-      <div class="cluster-section" ng-show="cluster">
-        <div id="cluster-name"  ng-switch on="editCluster.editingName">
-          <h5 ng-switch-when="false"><div title={{cluster.Clusters.cluster_name}} class="clusterDisplayName">{{clusterDisplayName()}}</div>
-            <i ng-show="cluster.Clusters.provisioning_state == 'INSTALLED'"
-               ng-click="toggleEditName()"
-               class="glyphicon glyphicon-edit pull-right edit-cluster-name renameCluster" tooltip="{{'common.renameCluster' | translate}}">
-            </i>
-          </h5>
-
-          <form ng-keyup="toggleEditName($event)"
-                tabindex="1"
-                name="editClusterNameForm"
-                class="editClusterNameForm"
-                ng-switch-when="true"
-                ng-submit="editCluster.name !== cluster.Clusters.cluster_name && editClusterNameForm.newClusterName.$valid && confirmClusterNameChange()">
-            <div class="form-group"
-                 ng-class="{'has-error': editClusterNameForm.newClusterName.$invalid && !editClusterNameForm.newClusterName.$pristine }">
-              <input
-                  autofocus
-                  type="text"
-                  name="newClusterName"
-                  ng-required="true"
-                  ng-pattern="/^\w*$/"
-                  ng-trim="false"
-                  ng-model="editCluster.name"
-                  class="form-control input-sm"
-                  ng-maxlength="80"
-                  tooltip="{{'common.renameClusterTip' | translate}}"
-                  tooltip-trigger="focus">
-              <button ng-click="toggleEditName()"
-                      class="btn btn-xs">
-                <i class="glyphicon glyphicon-remove"></i>
-              </button>
-              <button
-                  type="submit"
-                  class="btn btn-primary btn-xs"
-                  ng-class="{'disabled': editClusterNameForm.newClusterName.$invalid || editCluster.name == cluster.Clusters.cluster_name}">
-                <i class="glyphicon glyphicon-ok"></i>
-              </button>
-            </div>
-          </form>
-
-        </div>
-
-        <ul class="nav nav-pills nav-stacked" ng-show="cluster.Clusters.provisioning_state == 'INSTALLED' ">
-          <li ng-class="{active: isActive('clusters.manageAccess') || isActive('clusters.userAccessList')}">
-            <a href="#/clusters/{{cluster.Clusters.cluster_name}}/manageAccess" class="permissions">{{'common.roles' | translate}}</a>
-          </li>
-          <li><a href="{{fromSiteRoot('/#/dashboard')}}" class="gotodashboard">{{'common.goToDashboard' | translate}}</a></li>
-          <li ng-class="{active: isActive('clusters.exportBlueprint')}">
-            <a href="#/clusters/{{cluster.Clusters.cluster_name}}/exportBlueprint" class="exportblueprint">{{'common.exportBlueprint' | translate}}</a>
-          </li>
-        </ul>
-        <span class="cluster-installation-progress-label" ng-show="cluster.Clusters.provisioning_state == 'INIT'"><a href="{{fromSiteRoot('/#/')}}">{{'common.clusterCreationInProgress' | translate}}</a></span>
-      </div>
-
-
-      <div ng-hide="cluster">
-        <ul class="nav nav-pills nav-stacked">
-          <li><p class="noclusters">{{'common.noClusters' | translate}}</p></li>
-        </ul>
-      </div>
-      <ul class="nav nav-pills nav-stacked" >
-        <li ng-class="{active: isActive('stackVersions.list')}" ng-show="cluster && totalRepos > 0">
-          <a href="#/stackVersions">{{'common.versions' | translate}}</a>
-        </li>
-        <li ng-class="{active: isActive('remoteClusters.list')}">
-          <a href="#/remoteClusters">{{'common.remoteClusters' | translate}}</a>
-        </li>
-      </ul>
-    </div>
-  </div>
-
-  <div class="panel panel-default">
-    <div class="panel-heading"><span class="glyphicon glyphicon-th"></span> {{'common.views' | translate}}</div>
-    <div class="panel-body">
-      <ul class="nav nav-pills nav-stacked">
-        <li ng-class="{active: isActive('views.list')}"><link-to route="views.list" class="viewslist-link">{{'common.views' | translate}}</link-to></li>
-        <li ng-class="{active: isActive('views.listViewUrls') || isActive('views.createViewUrl') || isActive('views.editViewUrl') }"><link-to route="views.listViewUrls" class="viewslistviewurls-link">{{'common.viewUrls' | translate}}</link-to></li>
-      </ul>
-    </div>
-  </div>
-
-
-  <div class="panel panel-default">
-    <div class="panel-heading"><span class="glyphicon glyphicon-user"></span> {{'common.userGroupManagement' | translate}}</div>
-    <div class="panel-body">
-      <ul class="nav nav-pills nav-stacked">
-        <li ng-class="{active: isActive('users.list')}"><link-to route="users.list" class="userslist-link">{{'common.users' | translate}}</link-to></li>
-        <li ng-class="{active: isActive('groups.list')}"><link-to route="groups.list" class="groupslist-link">{{'common.groups' | translate}}</link-to></li>
-      </ul>
-    </div>
-  </div>
-
-  <div class="panel panel-default" ng-show="settings.isLoginActivitiesSupported || settings.isLDAPConfigurationSupported">
-    <div class="panel-heading"><span class="glyphicon glyphicon-cog"></span> {{'common.settings' | translate}}</div>
-    <div class="panel-body">
-      <ul class="nav nav-pills nav-stacked">
-        <li ng-class="{active: isActive('authentication.main')}" ng-show="settings.isLDAPConfigurationSupported"><link-to route="authentication.main">{{'common.authentication' | translate}}</link-to></li>
-        <li ng-class="{active: isActive('loginActivities.loginMessage')}" ng-show="settings.isLoginActivitiesSupported"><link-to route="loginActivities.loginMessage">{{'common.loginActivities.loginActivities' | translate}}</link-to></li>
-      </ul>
-    </div>
-  </div>
-</div>
-

+ 4 - 2
ambari-admin/src/main/resources/ui/admin-web/app/views/loginActivities/homeDirectory.html

@@ -25,9 +25,11 @@
       </div>
       <fieldset>
         <div class="form-group">
-          <label class="col-sm-4 control-label">{{'common.loginActivities.homeDirectory.autoCreate' | translate}}</label>
+          <label class="col-sm-4 switch-inline-label">{{'common.loginActivities.homeDirectory.autoCreate' | translate}}</label>
           <div class="col-sm-8">
-            <toggle-switch model="autoCreate" on-label="{{'common.enabled' | translate}}" off-label="{{'common.disabled' | translate}}" class="switch-primary"></toggle-switch>
+            <toggle-switch model="autoCreate" class="switch-success"></toggle-switch>
+            <span ng-if="autoCreate" class="switch-option-label">{{'common.enabled' | translate}}</span>
+            <span ng-if="!autoCreate" class="switch-option-label">{{'common.disabled' | translate}}</span>
           </div>
           <input type="checkbox" name="autoCreate" class="hidden" ng-model="autoCreate">
         </div>

+ 4 - 2
ambari-admin/src/main/resources/ui/admin-web/app/views/loginActivities/loginMessage.html

@@ -22,9 +22,11 @@
     <div class="well">
       <fieldset>
         <div class="form-group">
-          <label class="col-sm-2 control-label">{{'common.loginActivities.status' | translate}}</label>
+          <label class="col-sm-2 switch-inline-label">{{'common.loginActivities.status' | translate}}</label>
           <div class="col-sm-10">
-            <toggle-switch ng-click="changeStatus();" model="status" on-label="{{'common.enabled' | translate}}" off-label="{{'common.disabled' | translate}}" class="switch-primary userstatus" data-off-color="disabled"></toggle-switch>
+            <toggle-switch ng-click="changeStatus();" model="status" class="switch-success" data-off-color="disabled"></toggle-switch>
+            <span ng-if="status" class="switch-option-label">{{'common.enabled' | translate}}</span>
+            <span ng-if="!status" class="switch-option-label">{{'common.disabled' | translate}}</span>
           </div>
           <input type="checkbox" name="status" class="hidden" ng-model="status">
         </div>

+ 0 - 96
ambari-admin/src/main/resources/ui/admin-web/app/views/main.html

@@ -1,96 +0,0 @@
-<!--
-* 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.
--->
-<div class="panel panel-default mainpage">
-  <div class="panel-body">
-    <h1>{{'main.title' | translate}}</h1>
-
-    <div ng-if="isLoaded" id="main-operations-boxes" class="row thumbnails">
-      <p ng-hide="cluster">{{'main.noClusterDescription' | translate}}</p>
-
-      <p ng-show="cluster">{{'main.hasClusterDescription' | translate}}</p>
-
-      <!--Clusters-->
-      <div ng-show="cluster" class="col-sm-11 thumbnail">
-        <h4 class="title">{{'main.operateCluster.title' | translate}}</h4>
-
-        <div class="description">{{'main.operateCluster.description' | translate}}</div>
-        <div class="glyphicon glyphicon-cloud"></div>
-        <div class="buttons">
-        <span ng-class="{active: isActive('clusters.manageAccess')}">
-          <a ng-show="cluster.Clusters.provisioning_state != 'INSTALLED'" href class="btn btn-primary permission-button"
-             ng-disabled="cluster.Clusters.provisioning_state != 'INSTALLED' ">{{'main.operateCluster.manageRoles' |
-            translate}}</a>
-          <a ng-show="cluster.Clusters.provisioning_state == 'INSTALLED'"
-             href="#/clusters/{{cluster.Clusters.cluster_name}}/userAccessList"
-             class="btn btn-primary permission-button"
-             ng-disabled="cluster.Clusters.provisioning_state != 'INSTALLED' ">{{'main.operateCluster.manageRoles' |
-            translate}}</a>
-        </span>
-        <span>
-          <a ng-show="cluster.Clusters.provisioning_state != 'INSTALLED'" href
-             class="btn btn-primary go-dashboard-button"
-             ng-disabled="cluster.Clusters.provisioning_state != 'INSTALLED' ">{{'common.goToDashboard' |
-            translate}}</a>
-          <a ng-show="cluster.Clusters.provisioning_state == 'INSTALLED'"
-             href="{{fromSiteRoot('/#/main/dashboard/metrics')}}" class="btn btn-primary go-dashboard-button"
-             ng-disabled="cluster.Clusters.provisioning_state != 'INSTALLED' ">{{'common.goToDashboard' |
-            translate}}</a>
-        </span>
-        </div>
-      </div>
-      <div ng-hide="cluster" class="col-sm-11 thumbnail">
-        <h4 class="title">{{'main.createCluster.title' | translate}}</h4>
-
-        <div class="description">{{'main.createCluster.description' | translate}}</div>
-        <div class="glyphicon glyphicon-cloud"></div>
-        <div class="buttons"><a href="{{fromSiteRoot('/#/installer/step0')}}"
-                                class="btn btn-primary create-cluster-button">{{'main.createCluster.launchInstallWizard'
-          | translate}}</a></div>
-      </div>
-
-      <!--Manage Users and groups-->
-      <div class="col-sm-5 thumbnail">
-        <h4 class="title">{{'main.manageUsersAndGroups.title' | translate}}</h4>
-
-        <div class="description">{{'main.manageUsersAndGroups.description' | translate}}</div>
-        <div class="glyphicon glyphicon-user"></div>
-        <div class="buttons">
-          <span ng-class="{active: isActive('users.list')}"><link-to route="users.list"
-                                                                     class="btn btn-primary userslist-button">
-            {{'common.users' | translate}}
-          </link-to></span>
-          <span ng-class="{active: isActive('groups.list')}"><link-to route="groups.list"
-                                                                      class="btn btn-primary groupslist-button">
-            {{'common.groups' | translate}}
-          </link-to></span>
-        </div>
-      </div>
-
-      <!--Deploy Views-->
-      <div class="col-sm-5 thumbnail">
-        <h4 class="title">{{'main.deployViews.title' | translate}}</h4>
-
-        <div class="description">{{'main.deployViews.description' | translate}}</div>
-        <div class="glyphicon glyphicon-th"></div>
-        <div ng-class="{active: isActive('views.list')}" class="buttons">
-          <link-to route="views.list" class="btn btn-primary viewslist-button">{{'common.views' | translate}}</link-to>
-        </div>
-      </div>
-    </div>
-  </div>
-</div>

+ 8 - 6
ambari-admin/src/main/resources/ui/admin-web/app/views/modals/AddVersionModal.html

@@ -20,9 +20,10 @@
 </div>
 <br>
 <div class="clearfix register-version-options" ng-click="selectedLocalOption.index=1">
-    <div class="option-radio-button">
-        <label class="option-label">
-            <input type="radio" ng-model="selectedLocalOption.index" value="1"> {{'versions.uploadFile' | translate}}
+    <div class="option-radio-button checkbox">
+        <input type="radio" id="upload-file" ng-model="selectedLocalOption.index" value="1">
+        <label for="upload-file" class="option-label">
+           {{'versions.uploadFile' | translate}}
         </label>
     </div>
     <div class="col-sm-7 choose-file-input">
@@ -31,9 +32,10 @@
     </div>
 </div>
 <div class="clearfix register-version-options bottom-margin" ng-click="selectedLocalOption.index=2">
-    <div class="option-radio-button">
-        <label class="option-label">
-            <input type="radio" ng-model="selectedLocalOption.index" value="2"> {{'versions.enterURL' | translate}}
+    <div class="option-radio-button checkbox">
+        <input type="radio" id="entire-url" ng-model="selectedLocalOption.index" value="2">
+        <label for="entire-url" class="option-label">
+             {{'versions.enterURL' | translate}}
         </label>
     </div>
     <div class="col-sm-9">

+ 3 - 8
ambari-admin/src/main/resources/ui/admin-web/app/views/remoteClusters/list.html

@@ -18,17 +18,12 @@
 
 <div class="users-pane">
   <div class="clearfix">
-    <ol class="breadcrumb pull-left">
-      <li class="active">{{'common.remoteClusters' | translate}}</li>
-    </ol>
-    <div class="pull-right top-margin-4">
-      <a href="#/remoteClusters/create" class="btn btn-primary">
-        <span class="glyphicon glyphicon-plus"></span>
+    <div class="pull-right">
+      <a href="#/remoteClusters/create" class="btn btn-default">
         {{'views.registerRemoteCluster' | translate}}
       </a>
     </div>
   </div>
-  <hr>
   <table class="table table-striped table-hover">
     <thead>
       <tr>
@@ -63,7 +58,7 @@
   <div ng-if="isLoading" class="spinner-container">
     <i class="fa fa-2x fa-spinner fa-spin" aria-hidden="true"></i>
   </div>
-  <div class="alert alert-info col-sm-12" ng-show="!remoteClusters.length && !isLoading">
+  <div class="alert empty-table-alert col-sm-12" ng-show="!remoteClusters.length && !isLoading">
     {{'common.alerts.noRemoteClusterDisplay' | translate}}
   </div>
   <div class="col-sm-12 table-bar">

+ 99 - 0
ambari-admin/src/main/resources/ui/admin-web/app/views/sideNav.html

@@ -0,0 +1,99 @@
+<!--
+* 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.
+-->
+
+<div id="side-nav" class="navigation-bar navigation-bar-fit-height">
+  <div class="navigation-bar-container">
+    <ul class="side-nav-header nav nav-pills nav-stacked">
+      <li class="navigation-header active">
+        <a href="{{fromSiteRoot('/#/main/dashboard')}}" class="ambari-logo">
+          <img src="/img/ambari-logo.png" alt="{{'common.apacheAmbari' | translate}}" title="{{'common.apacheAmbari' | translate}}" data-qa="ambari-logo">
+        </a>
+        <div class="btn-group">
+          <a href="{{fromSiteRoot('/#/main/dashboard')}}" class="ambari-header-link" title="{{'common.apacheAmbari' | translate}}" data-qa="ambari-title">
+            <span class="ambari-header">
+              {{'common.ambari' | translate}}
+            </span>
+          </a>
+        </div>
+      </li>
+    </ul>
+    <ul class="nav side-nav-menu nav-pills nav-stacked">
+      <li class="mainmenu-li active" ng-show="cluster.Clusters.provisioning_state === 'INSTALLED'">
+        <a title="{{'common.dashboard' | translate}}" rel="tooltip" data-placement="right" href="{{fromSiteRoot('/#/dashboard')}}" class="gotodashboard">
+          <i class="navigation-icon fa fa-tachometer" aria-hidden="true"></i>
+          <span class="navigation-menu-item">{{'common.dashboard' | translate}}</span>
+        </a>
+      </li>
+      <li class="mainmenu-li dropdown has-sub-menu">
+        <a title="{{'common.clusterManagement' | translate}}" data-toggle="collapse-sub-menu" rel="tooltip" data-placement="right">
+          <span class="toggle-icon glyphicon glyphicon-menu-down pull-right"></span>
+          <i class="navigation-icon fa fa-cloud" aria-hidden="true"></i>
+          <span class="navigation-menu-item">{{'common.clusterManagement' | translate}}</span>
+        </a>
+        <ul class="sub-menu nav nav-pills nav-stacked">
+          <li class="submenu-li" ng-class="{active: isActive('clusters.clusterInformation')}">
+            <a href="#/clusterInformation" class="clusterInformation">
+              {{'common.clusterInformation' | translate}}
+            </a>
+          </li>
+          <li class="submenu-li"  ng-class="{active: isActive('stackVersions.list')}" ng-show="cluster && totalRepos > 0">
+            <a href="#/stackVersions">{{'common.versions' | translate}}</a>
+          </li>
+          <li class="submenu-li" ng-class="{active: isActive('remoteClusters.list')}">
+            <a href="#/remoteClusters">{{'common.remoteClusters' | translate}}</a>
+          </li>
+        </ul>
+      </li>
+      <li class="mainmenu-li" ng-class="{active: isActive('userManagement.main')}">
+        <link-to route="userManagement.main" class="userslist-link" title="{{'common.users' | translate}}" rel="tooltip" data-placement="right">
+          <i class="navigation-icon fa fa-users" aria-hidden="true"></i>
+          <span class="navigation-menu-item">{{'common.users' | translate}}</span>
+        </link-to>
+      </li>
+      <li class="mainmenu-li" ng-class="{active: isActive('views.list')}">
+        <link-to route="views.list" class="viewslist-link" title="{{'common.views' | translate}}" rel="tooltip" data-placement="right">
+          <i class="navigation-icon fa fa-th" aria-hidden="true"></i>
+          <span class="navigation-menu-item">{{'common.views' | translate}}</span>
+        </link-to>
+      </li>
+      <li class="mainmenu-li dropdown has-sub-menu" ng-show="settings.isLoginActivitiesSupported || settings.isLDAPConfigurationSupported">
+        <a title="{{'common.settings' | translate}}" data-toggle="collapse-sub-menu" rel="tooltip" data-placement="right">
+          <span class="toggle-icon glyphicon glyphicon-menu-down pull-right"></span>
+          <i class="navigation-icon glyphicon glyphicon-cog" aria-hidden="true"></i>
+          <span class="navigation-menu-item">{{'common.settings' | translate}}</span>
+        </a>
+        <ul class="sub-menu nav nav-pills nav-stacked">
+          <li class="submenu-li"  ng-class="{active: isActive('authentication.main')}" ng-show="settings.isLDAPConfigurationSupported">
+            <link-to route="authentication.main">{{'common.authentication' | translate}}</link-to>
+          </li>
+          <li class="submenu-li" ng-class="{active: isActive('loginActivities.loginMessage')}" ng-show="settings.isLoginActivitiesSupported">
+            <link-to route="loginActivities.loginMessage">{{'common.loginActivities.loginActivities' | translate}}</link-to>
+          </li>
+        </ul>
+      </li>
+    </ul>
+    <ul class="side-nav-footer nav nav-pills nav-stacked">
+      <li class="navigation-footer">
+        <a href="#" data-toggle="collapse-side-nav">
+          <span class="navigation-icon fa fa-angle-double-left" aria-hidden="true"></span>
+        </a>
+      </li>
+    </ul>
+  </div>
+</div>
+

+ 11 - 11
ambari-admin/src/main/resources/ui/admin-web/app/views/stackVersions/list.html

@@ -18,17 +18,12 @@
 
 <div id="stack-versions">
   <div class="clearfix">
-    <ol class="breadcrumb pull-left">
-      <li class="active">{{'common.versions' | translate}}</li>
-    </ol>
-    <div class="pull-right top-margin-4">
-      <a href="#/stackVersions/create" class="btn btn-primary">
-        <span class="glyphicon glyphicon-plus"></span>
+    <div class="pull-right">
+      <a href="#/stackVersions/create" class="btn btn-default">
         {{'versions.register.title' | translate}}
       </a>
     </div>
   </div>
-  <hr/>
   <table class="table table-striped table-hover">
     <thead>
     <tr>
@@ -99,11 +94,11 @@
           <span class="label {{'status-' + repo.status}}">{{'versions.installed' | translate}}:&nbsp;{{repo.installedHosts}}/{{repo.totalHosts}}</span>
         </div>
         <div ng-show="!repo.cluster">
-          <div class="btn-group display-inline-block" dropdown is-open="viewsdropdown.isopen" ng-mouseover="viewsdropdown.isopen=true" ng-mouseout="viewsdropdown.isopen=false" ng-init="viewsdropdown.isopen=false">
+          <div class="btn-group" ng-class="{open: viewsdropdown.isopen}" ng-mouseover="viewsdropdown.isopen=true" ng-mouseout="viewsdropdown.isopen=false" ng-init="viewsdropdown.isopen=false">
             <a class="btn dropdown-toggle">
               <span>{{'versions.installOn' | translate}}</span>
             </a>
-            <ul class="dropdown-menu" ng-show="viewsdropdown.isopen">
+            <ul class="dropdown-menu">
               <li ng-repeat="cluster in dropDownClusters">
                 <a href="javascript:void(null)" ng-click="goToCluster()">
                   <span>{{cluster.Clusters.cluster_name}}</span>
@@ -113,14 +108,19 @@
           </div>
         </div>
       </td>
-      <td class="text-center"><input type="checkbox" data-ng-model="repo.hidden" data-ng-change="toggleVisibility(repo)" data-ng-disabled="!isHideCheckBoxEnabled(repo)"/></td>
+      <td class="text-center">
+        <div class="checkbox">
+          <input ng-attr-id="{{ 'hidden-' + repo.id }}" type="checkbox" class="form-control" data-ng-model="repo.hidden" data-ng-change="toggleVisibility(repo)" data-ng-disabled="!isHideCheckBoxEnabled(repo)"/>
+          <label ng-attr-for="{{ 'hidden-' + repo.id }}"><span></span></label>
+        </div>
+      </td>
     </tr>
     </tbody>
   </table>
   <div ng-if="isLoading" class="spinner-container">
     <i class="fa fa-2x fa-spinner fa-spin" aria-hidden="true"></i>
   </div>
-  <div class="alert alert-info col-sm-12" ng-show="!repos.length && !isLoading">
+  <div class="alert empty-table-alert col-sm-12" ng-show="!repos.length && !isLoading">
     {{'common.alerts.nothingToDisplay' | translate: '{term: getConstant("common.version")}'}}
   </div>
   <div class="col-sm-12 table-bar">

+ 28 - 27
ambari-admin/src/main/resources/ui/admin-web/app/views/stackVersions/stackVersionPage.html

@@ -119,14 +119,14 @@
   </div>
 
   <div id="upload-definition-file-panel" ng-if="createController">
-    <div class="col-sm-12 big-radio clearfix hide-soft" ng-class="{'disabled' : networkLost || useRedhatSatellite,'visible':stackRepoUpdateLinkExists}">
-      <input type="radio" ng-model="selectedOption.index" value="1" ng-change="togglePublicLocalOptionSelect()" ng-disabled="networkLost || useRedhatSatellite">
-      <span>{{'versions.usePublic' | translate}}</span>
+    <div class="checkbox col-sm-12 big-radio clearfix hide-soft" ng-class="{'disabled' : networkLost || useRedhatSatellite,'visible':stackRepoUpdateLinkExists}">
+      <input id="use-public" type="radio" ng-model="selectedOption.index" value="1" ng-change="togglePublicLocalOptionSelect()" ng-disabled="networkLost || useRedhatSatellite">
+      <label for="use-public">{{'versions.usePublic' | translate}}</label>
       <a id="public-disabled-link" href="javascript:void(0);" ng-if="networkLost" ng-click="showPublicRepoDisabledDialog()">{{'versions.networkIssues.networkLost'| translate}}</a>
     </div>
-    <div class="col-sm-12 big-radio clearfix">
-      <input type="radio" ng-model="selectedOption.index" value="2" ng-change="togglePublicLocalOptionSelect()">
-      {{'versions.useLocal' | translate}}
+    <div class="checkbox col-sm-12 big-radio clearfix">
+      <input id="use-local" type="radio" ng-model="selectedOption.index" value="2" ng-change="togglePublicLocalOptionSelect()">
+      <label for="use-local">{{'versions.useLocal' | translate}}</label>
     </div>
   </div>
 
@@ -181,20 +181,22 @@
                 <div class="col-sm-9">
                   <div class="form-group repo-name-url {{repository.Repositories.repo_name}}"
                        ng-class="{'has-error': repository.hasError }" ng-repeat="repository in os.repositories">
-                    <span class="repo-name-label control-label col-sm-3">{{repository.Repositories.repo_id}}</span>
-                    <div class="col-sm-7 repo-url">
-                      <input type="text" class="form-control"
-                             placeholder="{{(repository.Repositories.repo_name.indexOf('UTILS') < 0 )?('versions.repository.placeholder' | translate) : ''}}"
-                             ng-model="repository.Repositories.base_url"
-                             ng-change="onRepoUrlChange(repository)" ng-disabled="useRedhatSatellite">
+                    <div ng-if="showRepo(repository)">
+                      <span class="repo-name-label control-label col-sm-3">{{repository.Repositories.repo_id}}</span>
+                      <div class="col-sm-7 repo-url">
+                        <input type="text" class="form-control"
+                               placeholder="{{(repository.Repositories.repo_name.indexOf('UTILS') < 0 )?('versions.repository.placeholder' | translate) : ''}}"
+                               ng-model="repository.Repositories.base_url"
+                               ng-change="onRepoUrlChange(repository)" ng-disabled="useRedhatSatellite">
+                      </div>
+                      <i class="fa fa-undo orange-icon cursor-pointer"
+                         ng-if="selectedOption.index == 1 && repository.Repositories.base_url != repository.Repositories.initial_base_url
+                         || selectedOption.index == 2 && repository.Repositories.base_url != ''
+                         || editController && repository.Repositories.base_url != repository.Repositories.initial_base_url"
+                         ng-click="undoChange(repository)"
+                         tooltip-html-unsafe="{{'common.undo' | translate}}"
+                         aria-hidden="true"></i>
                     </div>
-                    <i class="fa fa-undo orange-icon cursor-pointer"
-                       ng-if="selectedOption.index == 1 && repository.Repositories.base_url != repository.Repositories.initial_base_url
-                       || selectedOption.index == 2 && repository.Repositories.base_url != ''
-                       || editController && repository.Repositories.base_url != repository.Repositories.initial_base_url"
-                       ng-click="undoChange(repository)"
-                       tooltip-html-unsafe="{{'common.undo' | translate}}"
-                       aria-hidden="true"></i>
                   </div>
                 </div>
                 <div class="col-sm-1 remove-icon" ng-click="removeOS()" ng-class="{'disabled' : useRedhatSatellite}"><i
@@ -204,22 +206,21 @@
             </div>
           </div>
           <div class="clearfix advanced-radio-buttons">
-            <div class="col-sm-9" id="skip-validation">
+            <div class="col-sm-9">
               <div class="checkbox">
-                <label>
-                  <input type="checkbox" ng-model="skipValidation" ng-change="clearErrors()"
-                         ng-disabled="useRedhatSatellite">
+                <input type="checkbox" id="skip-validation" ng-model="skipValidation" ng-change="clearErrors()" ng-disabled="useRedhatSatellite">
+                <label for="skip-validation">
                   <span ng-class="{'disabled' : useRedhatSatellite}">{{'versions.skipValidation' | translate}}</span>
                   <i class="fa fa-question-circle"
                      tooltip-html-unsafe="{{'versions.alerts.skipValidationWarning' | translate}}" aria-hidden="true"></i>
                 </label>
               </div>
             </div>
-            <div class="col-sm-9" id="use-redhat">
+            <div class="col-sm-9">
               <div class="checkbox">
-                <label>
-                  <input type="checkbox" ng-model="useRedhatSatellite" ng-change="clearErrors()"
-                         ng-disabled="isPublicRepoSelected()">
+                <input type="checkbox" id="use-redhat" ng-model="useRedhatSatellite" ng-change="clearErrors()"
+                       ng-disabled="isPublicRepoSelected()">
+                <label for="use-redhat">
                   <span ng-class="{'disabled' : isPublicRepoSelected()}"
                         tooltip="{{(isPublicRepoSelected())? ('versions.useRedhatSatellite.disabledMsg' | translate) : ''}}">{{'versions.useRedhatSatellite.title' | translate}}</span>
                   <i class="fa fa-question-circle"

+ 2 - 4
ambari-admin/src/main/resources/ui/admin-web/app/views/urls/create.html

@@ -16,7 +16,6 @@
 * limitations under the License.
 -->
 <ol class="breadcrumb">
-    <li> <link-to route="views.listViewUrls">{{'urls.viewUrls' | translate}}</link-to></li>
     <li class="active">{{'urls.createNewUrl' | translate}}</li>
 </ol>
 <hr>
@@ -25,9 +24,9 @@
 
             <form class="form-horizontal create-user-form" role="form" novalidate name="formHolder.form" autocomplete="off">
                 <div class="form-group" ng-class="{'has-error' : formHolder.form.url_name.$error.required  && formHolder.form.submitted}">
-                    <label for="urlname" class="col-sm-2 control-label">{{'urls.name' | translate}}</label>
+                    <label for="urlname" class="col-sm-2 control-label">{{'common.name' | translate}}</label>
                     <div class="col-sm-10">
-                        <input ng-minlength="2" ng-maxlength="25" type="text" id="urlname" class="form-control urlname-input" name="url_name" placeholder="{{'urls.name' | translate}}" ng-model="url.urlName" required autocomplete="off">
+                        <input ng-minlength="2" ng-maxlength="25" type="text" id="urlname" class="form-control urlname-input" name="url_name" placeholder="{{'common.name' | translate}}" ng-model="url.urlName" required autocomplete="off">
                         <div class="alert alert-danger top-margin" ng-show="formHolder.form.url_name.$error.required  && formHolder.form.submitted">{{'common.alerts.fieldIsRequired' | translate}}</div>
                         <div class="alert alert-danger top-margin" ng-show="formHolder.form.url_name.$error.minlength   && formHolder.form.submitted">{{'common.alerts.minimumTwoChars' | translate}}</div>
                         <div class="alert alert-danger top-margin" ng-show="formHolder.form.url_name.$error.maxlength   && formHolder.form.submitted">{{'common.alerts.maxTwentyFiveChars' | translate}}</div>
@@ -68,7 +67,6 @@
                 <div class="form-group">
                     <div class="col-sm-offset-2 col-sm-10">
                         <button ng-disabled="stepTwoNotCompleted" class="btn btn-primary pull-right left-margin saveuser" ng-click="saveUrl()">{{'common.controls.save' | translate}}</button>
-                        <link-to route="views.listViewUrls" class="btn btn-default pull-right cancel">{{'common.controls.cancel' | translate}}</link-to>
 
                     </div>
                 </div>

+ 2 - 4
ambari-admin/src/main/resources/ui/admin-web/app/views/urls/edit.html

@@ -16,7 +16,6 @@
 * limitations under the License.
 -->
 <ol class="breadcrumb">
-  <li> <link-to route="views.listViewUrls">{{'urls.viewUrls' | translate}}</link-to></li>
   <li class="active">{{'urls.edit' | translate}} {{url.url_name}}</li>
   <div class="pull-right top-margin-4">
     <button class="btn deleteuser-btn btn-danger" ng-click="deleteUrl()">{{'views.urlDelete' | translate}}</button>
@@ -27,9 +26,9 @@
 
 <form  class="form-horizontal create-user-form" role="form" novalidate name="url_form" autocomplete="off">
   <div class="form-group" ng-class="{'has-error' : url_form.url_name.$error.required  && url_form.submitted}">
-    <label for="urlname" class="col-sm-2 control-label">{{'urls.name' | translate}}</label>
+    <label for="urlname" class="col-sm-2 control-label">{{'common.name' | translate}}</label>
     <div class="col-sm-10">
-      <input disabled type="text" id="urlname" class="form-control urlname-input" name="url_name" placeholder="{{'urls.name' | translate}}" ng-model="url.url_name" required autocomplete="off">
+      <input disabled type="text" id="urlname" class="form-control urlname-input" name="url_name" placeholder="{{'common.name' | translate}}" ng-model="url.url_name" required autocomplete="off">
       <div class="alert alert-danger top-margin" ng-show="url_form.url_name.$error.required  && url_form.submitted">{{'common.alerts.fieldIsRequired' | translate}}</div>
     </div>
   </div>
@@ -70,7 +69,6 @@
   <div class="form-group">
     <div class="col-sm-offset-2 col-sm-10">
       <button ng-disabled="stepTwoNotCompleted" class="btn btn-primary pull-right left-margin saveuser" ng-click="updateUrl()">{{'common.controls.save' | translate}}</button>
-      <link-to route="views.listViewUrls" class="btn btn-default pull-right cancel">{{'common.controls.cancel' | translate}}</link-to>
     </div>
   </div>
 

+ 122 - 0
ambari-admin/src/main/resources/ui/admin-web/app/views/userManagement/groupEdit.html

@@ -0,0 +1,122 @@
+<!--
+* 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.
+-->
+
+<div id="group-edit">
+  <div class="clearfix">
+    <ol class="breadcrumb pull-left">
+      <li><a href="#/userManagement?tab=groups">{{'common.groups' | translate}}</a></li>
+      <li class="active">{{group.group_name}}</li>
+    </ol>
+    <div class="pull-right">
+      <div ng-switch="group.group_type != 'LOCAL'">
+        <button
+          ng-switch-when="true"
+          class="btn disabled deletegroup-btn"
+          tooltip="{{'common.cannotDelete' | translate: '{term: constants.group}'}}">
+          {{'common.delete' | translate: '{term: constants.group}'}}
+        </button>
+        <button ng-switch-when="false" class="btn btn-danger deletegroup-btn" ng-click="deleteGroup(group)">
+          {{'common.delete' | translate: '{term: constants.group}'}}
+        </button>
+      </div>
+    </div>
+  </div>
+
+  <form class="form-horizontal" role="form" novalidate name="form" >
+    <div class="form-group">
+      <label class="col-sm-2 control-label">{{'common.type' | translate}}</label>
+      <div class="col-sm-10">
+        <label class="control-label">{{group.groupTypeName | translate}}</label>
+      </div>
+    </div>
+    <div class="form-group">
+      <label class="col-sm-2 control-label">{{group.groupTypeName | translate}} {{'groups.members' | translate}}</label>
+      <div class="col-sm-10">
+        <editable-list items-source="group.editingUsers" resource-type="User" editable="group.group_type == 'LOCAL'"></editable-list>
+      </div>
+    </div>
+    <div class="form-group">
+      <label for="role" class="col-sm-2 roles-label">
+        {{'groups.role' | translate}}
+        <i class="fa fa-question-circle" aria-hidden="true" ng-click="showHelpPage()"></i>
+      </label>
+      <div class="col-sm-3">
+        <select class="form-control"
+                id="role"
+                name="role"
+                ng-change="updateRole()"
+                ng-options="item as item.permission_label for item in roleOptions track by item.permission_name"
+                ng-model="currentRole">
+        </select>
+      </div>
+    </div>
+    <div class="form-group">
+      <label class="col-sm-2 control-label">{{'common.privileges' | translate}}</label>
+      <div class="col-sm-10">
+        <table class="table" ng-hide="hidePrivileges">
+          <thead>
+          <tr>
+            <th>{{'common.cluster' | translate}}</th>
+            <th>{{'common.clusterRole' | translate}}</th>
+          </tr>
+          </thead>
+          <tbody>
+          <tr ng-repeat="(name, privilege) in privileges.clusters">
+            <td>
+              <span class="glyphicon glyphicon-cloud"></span>
+              <a href="#/clusters/{{name}}/manageAccess">{{name}}</a>
+            </td>
+            <td>
+              <span tooltip="{{item}}" ng-repeat="item in privilege">{{item | translate}}{{$last ? '' : ', '}}</span>
+            </td>
+          </tr>
+          <tr>
+            <td ng-show="noClusterPriv">{{'common.alerts.noPrivileges' | translate: '{term: constants.cluster}'}}</td>
+          </tr>
+          </tbody>
+          <thead class="view-permission-header">
+          <tr>
+            <th>{{'common.view' | translate}}</th>
+            <th>{{'common.viewPermissions' | translate}}</th>
+          </tr>
+          </thead>
+          <tbody>
+          <tr ng-repeat="(name, privilege) in privileges.views">
+            <td>
+              <span class="glyphicon glyphicon-th"></span>
+              <a href="#/views/{{privilege.view_name}}/versions/{{privilege.version}}/instances/{{name}}/edit">{{name}}</a>
+            </td>
+            <td>
+              <span tooltip="{{item}}" ng-repeat="item in privilege.privileges">{{item | translate}}{{$last ? '' : ', '}}</span>
+            </td>
+            <td>
+              <i class="fa fa-trash-o" aria-hidden="true" ng-click="removeViewPrivilege(name, privilege);"></i>
+            </td>
+          </tr>
+          <tr>
+            <td ng-show="noViewPriv">{{'common.alerts.noPrivileges' | translate: '{term: constants.view}'}}</td>
+          </tr>
+          </tbody>
+        </table>
+        <div class="alert alert-info" ng-show="hidePrivileges">
+          {{'common.alerts.noPrivilegesDescription' | translate: '{term: constants.group.toLowerCase()}'}}
+        </div>
+      </div>
+    </div>
+  </form>
+</div>

+ 37 - 22
ambari-admin/src/main/resources/ui/admin-web/app/views/groups/list.html → ambari-admin/src/main/resources/ui/admin-web/app/views/userManagement/groupsList.html

@@ -16,55 +16,70 @@
 * limitations under the License.
 -->
 <div class="groups-pane">
-  <div class="clearfix">
-    <ol class="breadcrumb pull-left">
-      <li class="active">{{'common.groups' | translate}}</li>
-    </ol>
-    <div class="pull-right top-margin-4">
-      <link-to route="groups.create" class="btn btn-primary creategroup-btn"><span class="glyphicon glyphicon-plus"></span> {{'groups.createLocal' | translate}}</link-to>
-    </div>
+  <div class="clearfix panel">
+    <button class="btn btn-default creategroup-btn pull-right" ng-click="createGroup()">
+      {{'groups.createLocal' | translate}}
+    </button>
   </div>
-  <hr>
   <table class="table table-striped table-hover col-sm-12">
     <thead>
       <tr>
-        <th class="col-sm-8">
+        <th class="col-sm-6">
+          <span>{{'groups.name' | translate}}</span>
+        </th>
+        <th class="col-sm-2">
+          <span>{{'common.type' | translate}}</span>
+        </th>
+        <th class="col-sm-2">
+          <span>{{'groups.members' | translate}}</span>
+        </th>
+        <th class="col-sm-2">
+          <span>{{'common.actions' | translate}}</span>
+        </th>
+      </tr>
+      <tr>
+        <th class="col-sm-6">
           <div class="search-container">
-            <label for="">{{'groups.name' | translate}}</label>
-            <input type="text" class="form-control namefilter" placeholder="{{'common.any' | translate}}" ng-model="currentNameFilter" ng-change="resetPagination()">
-            <button type="button" class="close" ng-show="currentNameFilter" ng-click="currentNameFilter=''; resetPagination()"><span aria-hidden="true">&times;</span><span class="sr-only">{{'common.controls.close' | translate}}</span></button>
+            <input type="text" class="form-control namefilter" placeholder="{{'common.any' | translate}}" ng-model="filter.name" ng-change="resetPagination()">
+            <button type="button" class="close" ng-show="filter.name" ng-click="filter.name=''; resetPagination()"><span aria-hidden="true">&times;</span><span class="sr-only">{{'common.controls.close' | translate}}</span></button>
           </div>
         </th>
         <th class="col-sm-2">
-          <label for="">{{'common.type' | translate}}</label>
           <select class="form-control typefilter"
-            ng-model="currentTypeFilter"
-            ng-options="item.label for item in typeFilterOptions"
-            ng-change="resetPagination();">
+                  ng-model="filter.type"
+                  ng-options="item.label for item in typeFilterOptions"
+                  ng-change="resetPagination();">
           </select>
         </th>
-        <th class="col-sm-2 vertical-top">
-          <label for="">{{'groups.members' | translate}}</label>
-        </th>
+        <th class="col-sm-2"></th>
+        <th class="col-sm-2"></th>
       </tr>
     </thead>
     <tbody>
       <tr ng-repeat="group in groups">
         <td class="col-sm-8">
-          <link-to route="groups.edit" class="link-to-group" id="{{group.group_name}}">{{group.group_name}}</link-to>
+          <span>{{group.group_name}}</span>
         </td>
         <td class="col-sm-2">{{group.groupTypeName | translate}}</td>
         <td class="col-sm-2">{{'groups.membersPlural' | translate: '{n: group.members && group.members.length || 0}'}}</td>
+        <td class="entity-actions">
+          <link-to route="userManagement.editGroup" class="link-to-group" id="{{group.group_name}}">
+            <i class="fa fa-pencil"></i>
+          </link-to>
+          <a href ng-click="deleteGroup(group)">
+            <i class="fa fa-trash-o"></i>
+          </a>
+        </td>
       </tr>
     </tbody>
   </table>
   <div ng-if="isLoading" class="spinner-container">
     <i class="fa fa-2x fa-spinner fa-spin" aria-hidden="true"></i>
   </div>
-  <div class="alert alert-info col-sm-12" ng-show="!groups.length && !isLoading">
+  <div class="alert empty-table-alert col-sm-12" ng-show="!groups.length && !isLoading">
     {{'common.alerts.nothingToDisplay' | translate: '{term: constants.groups}'}}
   </div>
-  <div class="col-sm-12 table-bar">
+  <div class="col-sm-12 table-bar" ng-show="totalGroups > minRowsToShowPagination">
     <div class="pull-left filtered-info">
       <span>{{'common.filterInfo' | translate: '{showed: tableInfo.showed, total: tableInfo.total, term: constants.groups}'}}</span>
       <span ng-show="isNotEmptyFilter">- <a href ng-click="clearFilters()">{{'common.controls.clearFilters' | translate}}</a></span>

+ 17 - 21
ambari-admin/src/main/resources/ui/admin-web/app/views/clusters/exportBlueprint.html → ambari-admin/src/main/resources/ui/admin-web/app/views/userManagement/main.html

@@ -15,26 +15,22 @@
 * See the License for the specific language governing permissions and
 * limitations under the License.
 -->
-<div class="cluster-manage-access-pane" data-ng-init="getBlueprint()" ng-controller="ExportBlueprintCtrl">
-  <div class="clearfix">
-    <ol class="breadcrumb pull-left">
-      <li class="active">{{clusterName}} {{'common.blueprint' | translate}}</li>
-    </ol>
-    <div class="pull-right top-margin-4">
-      <div class="pull-right top-margin-4">
-        <div class="btn btn-default" ng-click="downloadBlueprint()">{{"common.download" | translate}}</div>
-      </div>
-    </div>
-  </div>
-  <hr>
+
+<div id="user-management">
+  <ul class="nav nav-tabs">
+    <li ng-class="{active: activeTab === 'USERS'}">
+      <a href="#/userManagement?tab=users" >{{'common.users' | translate}}</a>
+    </li>
+    <li ng-class="{active: activeTab === 'GROUPS'}">
+      <a href="#/userManagement?tab=groups" >{{'common.groups' | translate}}</a>
+    </li>
+  </ul>
   <div>
-    <textarea type="text"
-               rows="20"
-               class="form-control"
-               name="blueprint_text"
-               ng-model="blueprint"
-               ng-disabled="true"
-               ng-readonly="true">
-    </textarea>
+    <div class="users" ng-if="activeTab === 'USERS'">
+      <div ng-include="'views/userManagement/usersList.html'" ng-controller="UsersListCtrl"></div>
+    </div>
+    <div class="groups" ng-if="activeTab === 'GROUPS'">
+      <div ng-include="'views/userManagement/groupsList.html'" ng-controller="GroupsListCtrl"></div>
+    </div>
   </div>
-</div>
+</div>

+ 0 - 0
ambari-admin/src/main/resources/ui/admin-web/app/views/users/modals/changePassword.html → ambari-admin/src/main/resources/ui/admin-web/app/views/userManagement/modals/changePassword.html


+ 87 - 0
ambari-admin/src/main/resources/ui/admin-web/app/views/userManagement/modals/groupCreate.html

@@ -0,0 +1,87 @@
+<!--
+* 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.
+-->
+
+<form id="create-group-form" role="form" novalidate name="form.groupCreateForm">
+  <div class="modal-header">
+    <h1 class="modal-title col-sm-8">
+      {{'groups.createLocal' | translate}}
+    </h1>
+    <a class="close" aria-hidden="true" ng-click="cancel()">&times;</a>
+  </div>
+  <div class="modal-body">
+    <div class="form-group"
+         ng-class="{ 'has-error': (form.groupCreateForm.groupName.$error.required || form.groupCreateForm.groupName.$error.pattern) && form.groupCreateForm.submitted }">
+      <label for="groupName">
+        {{'groups.name' | translate}}<span>&nbsp;*</span>&nbsp;
+      </label>
+      <input type="text"
+             placeholder="{{'groups.name' | translate}}"
+             ng-pattern="/^([a-zA-Z0-9._\s]+)$/"
+             autofocus
+             ng-maxlength="80"
+             autocomplete="off"
+             class="form-control"
+             ng-model="formData.groupName"
+             name="groupName"
+             id="groupName"
+             ng-change="checkIfInstanceExist()"
+             required>
+      <span class="help-block validation-block"
+            ng-show='form.groupCreateForm.groupName.$error.required && form.groupCreateForm.submitted'>
+        {{'common.alerts.fieldRequired' | translate}}
+      </span>
+      <span class="help-block validation-block"
+            ng-show='form.groupCreateForm.groupName.$error.pattern && form.groupCreateForm.submitted'>
+        {{'common.alerts.noSpecialChars' | translate}}
+      </span>
+    </div>
+
+    <div class="form-group">
+      <label>{{'groups.addUsers' | translate}}</label>
+      <div>
+        <editable-list items-source="formData.members" resource-type="User" editable="true"></editable-list>
+      </div>
+    </div>
+
+    <div class="row">
+      <div class="form-group col-sm-6"
+           ng-class="{ 'has-error': form.groupCreateForm.role.$error.required && form.groupCreateForm.submitted }">
+        <label for="role" class="nowrap roles-label">
+          {{'groups.role' | translate}}
+          <i class="fa fa-question-circle" aria-hidden="true" ng-click="showHelpPage()"></i>
+        </label>
+        <select
+          class="form-control"
+          id="role"
+          name="role"
+          ng-model="formData.role">
+          <option value="" class="hide">{{'common.select' | translate}}</option>
+          <option ng-repeat="role in roleOptions" value="{{role.permission_name}}">{{role.permission_label}}</option>
+        </select>
+        <span class="help-block validation-block" ng-show='form.groupCreateForm.role.$error.required && form.groupCreateForm.submitted'>
+          {{'common.alerts.fieldRequired' | translate}}
+        </span>
+      </div>
+    </div>
+
+  </div>
+  <div class="modal-footer">
+    <button class="btn btn-default" ng-click="cancel()">{{'common.controls.cancel' | translate}}</button>
+    <button class="btn btn-primary" ng-click="save()" type="submit">{{'common.controls.save' | translate}}</button>
+  </div>
+</form>

+ 152 - 0
ambari-admin/src/main/resources/ui/admin-web/app/views/userManagement/modals/userCreate.html

@@ -0,0 +1,152 @@
+<!--
+* 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.
+-->
+
+<form id="create-user-form" role="form" novalidate name="form.userCreateForm">
+  <div class="modal-header">
+    <h1 class="modal-title col-sm-8">
+      {{'users.create' | translate}}
+    </h1>
+    <a class="close" aria-hidden="true" ng-click="cancel()">&times;</a>
+  </div>
+  <div class="modal-body">
+    <div class="form-group"
+         ng-class="{ 'has-error': (form.userCreateForm.userName.$error.required || form.userCreateForm.userName.$error.pattern) && form.userCreateForm.submitted }">
+      <label for="userName">
+        {{'users.username' | translate}}<span>&nbsp;*</span>&nbsp;
+        <i class="fa fa-question-circle" aria-hidden="true"></i>
+      </label>
+      <input type="text"
+             autofocus
+             placeholder="{{'users.user.name' | translate}}"
+             ng-pattern="/^[^<>&`|\\]+$/"
+             ng-maxlength="80"
+             tooltip="{{'users.userNameTip' | translate}}"
+             autocomplete="off"
+             tooltip-trigger="focus"
+             class="form-control"
+             ng-model="formData.userName"
+             name="userName"
+             id="userName"
+             ng-change="checkIfInstanceExist()"
+             required>
+      <span class="help-block validation-block"
+            ng-show='form.userCreateForm.userName.$error.required && form.userCreateForm.submitted'>
+        {{'common.alerts.fieldRequired' | translate}}
+      </span>
+      <span class="help-block validation-block"
+            ng-show='form.userCreateForm.userName.$error.pattern && form.userCreateForm.submitted'>
+        {{'common.alerts.noSpecialChars' | translate}}
+      </span>
+    </div>
+
+    <div class="row">
+      <div class="form-group col-sm-6"
+           ng-class="{ 'has-error': form.userCreateForm.password.$error.required && form.userCreateForm.submitted }">
+        <label for="password">
+          {{'users.password' | translate}}<span>&nbsp;*</span>
+        </label>
+        <input type="password"
+               id="password"
+               class="form-control"
+               name="password"
+               placeholder="{{'users.password' | translate}}"
+               required
+               ng-model="formData.password"
+               autocomplete="off">
+        <span class="help-block validation-block"
+              ng-show='form.userCreateForm.password.$error.required && form.userCreateForm.submitted'>
+          {{'common.alerts.fieldRequired' | translate}}
+        </span>
+      </div>
+      <div class="form-group col-sm-6"
+           ng-class="{ 'has-error': form.userCreateForm.confirmPassword.$error.passwordVerify || (form.userCreateForm.confirmPassword.$error.required && form.userCreateForm.submitted) }">
+        <label for="confirmPassword">
+          {{'users.confirmPassword' | translate}}<span>&nbsp;*</span>
+        </label>
+        <input type="password"
+               id="confirmPassword"
+               class="form-control"
+               name="confirmPassword"
+               placeholder="{{'users.confirmPassword' | translate}}"
+               required
+               password-verify="formData.password"
+               ng-model="formData.confirmPassword"
+               autocomplete="off">
+        <span class="help-block validation-block"
+              ng-show='form.userCreateForm.confirmPassword.$error.required && form.userCreateForm.submitted'>
+          {{'common.alerts.fieldRequired' | translate}}
+        </span>
+        <span class="help-block validation-block"
+              ng-show='form.userCreateForm.confirmPassword.$error.passwordVerify'>
+          {{'users.alerts.wrongPassword' | translate}}
+        </span>
+      </div>
+    </div>
+
+    <div class="row">
+      <div class="form-group col-sm-6"
+           ng-class="{ 'has-error': form.userCreateForm.role.$error.required && form.userCreateForm.submitted }">
+        <label for="role" class="nowrap roles-label">
+          {{'users.role' | translate}}<span>&nbsp;*</span>
+          <i class="fa fa-question-circle" aria-hidden="true" ng-click="showHelpPage()"></i>
+        </label>
+        <select
+          class="form-control"
+          id="role"
+          name="role"
+          ng-model="formData.role"
+          required>
+          <option value="" class="hide">{{'common.select' | translate}}</option>
+          <option ng-repeat="role in roleOptions" value="{{role.permission_name}}">{{role.permission_label}}</option>
+        </select>
+        <span class="help-block validation-block" ng-show='form.userCreateForm.role.$error.required && form.userCreateForm.submitted'>
+          {{'common.alerts.fieldRequired' | translate}}
+        </span>
+      </div>
+    </div>
+
+    <div class="form-group">
+      <label>
+        {{'users.isAmbariAdmin' | translate}}<span>&nbsp;*</span>
+        <i class="fa fa-question-circle" aria-hidden="true"></i>
+      </label>
+      <div>
+        <toggle-switch model="formData.isAdmin" class="switch-success" data-off-color="danger"></toggle-switch>
+        <span ng-if="formData.isAdmin" class="switch-option-label">{{'common.yes' | translate}}</span>
+        <span ng-if="!formData.isAdmin" class="switch-option-label">{{'common.no' | translate}}</span>
+      </div>
+    </div>
+
+    <div class="form-group">
+      <label>
+        {{'users.isActive' | translate}}<span>&nbsp;*</span>
+        <i class="fa fa-question-circle" aria-hidden="true"></i>
+      </label>
+      <div>
+        <toggle-switch model="formData.isActive" class="switch-success" data-off-color="danger"></toggle-switch>
+        <span ng-if="formData.isActive" class="switch-option-label">{{'users.active' | translate}}</span>
+        <span ng-if="!formData.isActive" class="switch-option-label">{{'users.inactive' | translate}}</span>
+      </div>
+    </div>
+
+  </div>
+  <div class="modal-footer">
+    <button class="btn btn-default" ng-click="cancel()">{{'common.controls.cancel' | translate}}</button>
+    <button class="btn btn-primary" ng-click="save()" type="submit">{{'common.controls.save' | translate}}</button>
+  </div>
+</form>

+ 39 - 17
ambari-admin/src/main/resources/ui/admin-web/app/views/users/show.html → ambari-admin/src/main/resources/ui/admin-web/app/views/userManagement/userEdit.html

@@ -16,13 +16,13 @@
 * limitations under the License.
 -->
     
-<div ng-show="user" class="user-edit-panel">
+<div ng-show="user" id="user-edit">
   <div class="clearfix">
     <ol class="breadcrumb pull-left">
-      <li><a href="#/users">{{'common.users' | translate}}</a></li>
+      <li><a href="#/userManagement?tab=users">{{'common.users' | translate}}</a></li>
       <li class="active"><span class="glyphicon glyphicon-flash" ng-show="user.admin"></span>{{user.user_name}}</li>
     </ol>
-    <div class="pull-right top-margin-4">
+    <div class="pull-right">
       <div ng-switch="isCurrentUser || user.user_type != 'LOCAL'">
         <button class="btn deleteuser-btn disabled btn-default" ng-switch-when="true" tooltip="{{'common.cannotDelete' | translate: '{term: constants.user}'}}">{{'common.delete' | translate: '{term: constants.user}'}}</button>
         <button class="btn deleteuser-btn btn-danger" ng-switch-when="false" ng-click="deleteUser()">{{'common.delete' | translate: '{term: constants.user}'}}</button>
@@ -32,25 +32,29 @@
   <hr>
   <form class="form-horizontal" role="form" >
     <div class="form-group">
-      <label for="" class="col-sm-2 control-label">{{'common.type' | translate}}</label>
+      <label class="col-sm-2 ">{{'common.type' | translate}}</label>
       <div class="col-sm-10">
-        <label for="" class="control-label">{{user.userTypeName}}</label>
+        <label>{{user.userTypeName}}</label>
       </div>
     </div>
     <div class="form-group">
-      <label for="" class="col-sm-2 control-label">{{'users.status' | translate}}</label>
+      <label class="col-sm-2 switch-inline-label">{{'users.status' | translate}}</label>
       <div class="col-sm-10">
-        <toggle-switch on-change="toggleUserActive()" disabled-tooltip="{{'users.alerts.cannotChange' | translate: '{term: constants.status}'}}" ng-disabled="isCurrentUser" model="user.active" on-label="{{'users.active' | translate}}" off-label="{{'users.inactive' | translate}}" class="switch-primary userstatus {{user ? '' : 'no-animation'}}" data-off-color="danger"></toggle-switch>
+        <toggle-switch on-change="toggleUserActive()" disabled-tooltip="{{'users.alerts.cannotChange' | translate: '{term: constants.status}'}}" ng-disabled="isCurrentUser" model="user.active" class="switch-success userstatus {{user ? '' : 'no-animation'}}" data-off-color="danger"></toggle-switch>
+        <span ng-if="user.active" class="switch-option-label">{{'users.active' | translate}}</span>
+        <span ng-if="!user.active" class="switch-option-label">{{'users.inactive' | translate}}</span>
       </div>
     </div>
     <div class="form-group">
-      <label for="" class="col-sm-2 control-label"><span class="glyphicon glyphicon-flash"></span> {{'users.ambariAdmin' | translate}}</label>
+      <label class="col-sm-2 switch-inline-label"><span class="glyphicon glyphicon-flash"></span> {{'users.ambariAdmin' | translate}}</label>
       <div class="col-sm-10">
-        <toggle-switch on-change="toggleUserAdmin()" disabled-tooltip="{{'users.alerts.cannotChange' | translate: '{term: constants.admin}'}}" ng-disabled="isCurrentUser" model="user.admin" on-label="{{'common.yes' | translate}}" off-label="{{'common.no' | translate}}" class="switch-primary userstatus {{user ? '' : 'no-animation'}}" data-off-color="danger"></toggle-switch>
+        <toggle-switch on-change="toggleUserAdmin()" disabled-tooltip="{{'users.alerts.cannotChange' | translate: '{term: constants.admin}'}}" ng-disabled="isCurrentUser" model="user.admin" class="switch-success userstatus {{user ? '' : 'no-animation'}}" data-off-color="danger"></toggle-switch>
+        <span ng-if="user.admin" class="switch-option-label">{{'common.yes' | translate}}</span>
+        <span ng-if="!user.admin" class="switch-option-label">{{'common.no' | translate}}</span>
       </div>
     </div>
     <div class="form-group">
-      <label for="password" class="col-sm-2 control-label">{{'users.password' | translate}}</label>
+      <label class="col-sm-2 ">{{'users.password' | translate}}</label>
       <div class="col-sm-10">
         <div ng-switch="user.user_type != 'LOCAL'">
           <button class="btn deleteuser-btn disabled btn-default" ng-switch-when="true" tooltip="{{'users.alerts.cannotChange' | translate: '{term: constants.password}'}}">{{'users.changePassword' | translate}}</button>
@@ -60,14 +64,32 @@
       </div>
     </div>
     <div class="form-group">
-      <label for="groups" class="col-sm-2 control-label">{{getUserMembership(user.user_type)}}</label>
+      <label class="col-sm-2 ">{{getUserMembership(user.user_type)}}</label>
       <div class="col-sm-10">
         <editable-list items-source="editingGroupsList" resource-type="Group" editable="user.user_type == 'LOCAL'"></editable-list>
       </div>
-        
     </div>
+
+    <div class="form-group">
+      <label for="role" class="col-sm-2 roles-label">
+        {{'users.role' | translate}}
+        <i class="fa fa-question-circle" aria-hidden="true" ng-click="showHelpPage()"></i>
+      </label>
+      <div class="col-sm-3">
+        <select ng-hide="user.admin"
+                class="form-control"
+                id="role"
+                name="role"
+                ng-options="item as item.permission_label for item in roleOptions track by item.permission_name"
+                ng-change="updateRole()"
+                ng-model="currentRole">
+        </select>
+        <span ng-show="user.admin" class="roles-label">{{user.roles[0].permission_label}}</span>
+      </div>
+    </div>
+
     <div class="form-group" >
-      <label for="" class="col-sm-2 control-label">{{'common.privileges' | translate}}</label>
+      <label class="col-sm-2 ">{{'common.privileges' | translate}}</label>
       <div class="col-sm-10">
         <table class="table" ng-hide="hidePrivileges || user.admin">
           <thead>
@@ -77,7 +99,7 @@
             </tr>
           </thead>
           <tbody>
-            <tr ng-repeat="(name, privilege) in privileges.clusters">
+            <tr ng-repeat="(name, privilege) in privilegesView.clusters">
               <td>
                 <span class="glyphicon glyphicon-cloud"></span> 
                 <a href="#/clusters/{{name}}/manageAccess">{{name}}</a>
@@ -97,7 +119,7 @@
             </tr>
           </thead>
           <tbody>
-            <tr ng-repeat="(name, privilege) in privileges.views">
+            <tr ng-repeat="(name, privilege) in privilegesView.views">
               <td>
                 <span class="glyphicon glyphicon-th"></span>
                 <a href="#/views/{{privilege.view_name}}/versions/{{privilege.version}}/instances/{{name}}/edit">{{name}}</a>
@@ -106,7 +128,7 @@
                 <span tooltip="{{item}}" ng-repeat="item in privilege.privileges track by $index">{{item | translate}}{{$last ? '' : ', '}}</span>
               </td>
               <td>
-                <i class="fa fa-trash-o" aria-hidden="true" ng-click="removePrivilege(name, privilege);"></i>
+                <i class="fa fa-trash-o" aria-hidden="true" ng-click="removeViewPrivilege(name, privilege);"></i>
               </td>
             </tr>
             <tr>
@@ -114,7 +136,7 @@
             </tr>
           </tbody>
         </table>
-        <div class="alert alert-info" ng-show="!privileges && !user.admin">{{'common.alerts.noPrivilegesDescription' | translate: '{term: constants.user}'}}</div>
+        <div class="alert alert-info" ng-show="hidePrivileges && !user.admin">{{'common.alerts.noPrivilegesDescription' | translate: '{term: constants.user}'}}</div>
         <div class="alert alert-info" ng-show="user.admin">{{'users.userIsAdmin' | translate}}</div>
       </div>
     </div>

+ 58 - 35
ambari-admin/src/main/resources/ui/admin-web/app/views/users/list.html → ambari-admin/src/main/resources/ui/admin-web/app/views/userManagement/usersList.html

@@ -17,71 +17,94 @@
 -->
 
 <div class="users-pane">
-  <div class="clearfix">
-    <ol class="breadcrumb pull-left">
-      <li class="active">{{'common.users' | translate}}</li>
-    </ol>
-    <div class="pull-right top-margin-4">
-      <link-to route="users.create" class="btn btn-primary createuser-btn"><span class="glyphicon glyphicon-plus"></span> {{'users.create' | translate}}</link-to>
-    </div>
+  <div class="clearfix panel">
+    <button class="btn btn-default createuser-btn pull-right" ng-click="createUser();">
+      {{'users.create' | translate}}
+    </button>
   </div>
-  <hr>
   <table class="table table-striped table-hover">
     <thead>
-      <tr>
-        <th width="30">
-          <span class="bottom-margin admin-filter glyphicon glyphicon-flash" 
-            ng-class="{'no-filter' : !adminFilter}" 
-            ng-click="toggleAdminFilter()"
-            tooltip="{{(adminFilter ? 'users.showAll' : 'users.showAdmin') | translate}}"
-          ></span>
+      <tr class="fix-bottom">
+        <th>
+          <span>{{'users.username' | translate}}</span>
+        </th>
+        <th>
+          <span>{{'clusters.role' | translate}}</span>
+        </th>
+        <th>
+          <span>{{'users.status' | translate}}</span>
+        </th>
+        <th>
+          <span>{{'common.type' | translate}}</span>
+        </th>
+        <th>
+          <span>{{'common.group' | translate}}</span>
+        </th>
+        <th class="entity-actions">
+          <span>{{'common.actions' | translate}}</span>
         </th>
+      </tr>
+      <tr class="fix-top">
         <th>
           <div class="search-container">
-            <label for="">{{'users.username' | translate}}</label>
-            <input type="text" class="form-control namefilter" placeholder="{{'common.any' | translate}}" ng-model="currentNameFilter" ng-change="resetPagination()">
-            <button type="button" class="close clearfilter" ng-show="currentNameFilter" ng-click="currentNameFilter=''; resetPagination()"><span aria-hidden="true">&times;</span><span class="sr-only">{{'common.controls.close' | translate}}</span></button>
+            <input type="text" class="form-control namefilter" placeholder="{{'common.any' | translate}}" ng-model="filters.name" ng-change="resetPagination()">
+            <button type="button" class="close clearfilter" ng-show="filters.name" ng-click="filters.name=''; resetPagination()">
+              <span aria-hidden="true">&times;</span><span class="sr-only">{{'common.controls.close' | translate}}</span>
+            </button>
           </div>
         </th>
+        <th></th>
         <th>
-          <label for="">{{'common.type' | translate}}</label>
-          <select class="form-control typefilter"
-            ng-model="currentTypeFilter"
-            ng-options="item.label for item in typeFilterOptions"
-            ng-change="resetPagination()">
+          <select class="form-control statusfilter"
+                  ng-model="filters.status"
+                  ng-options="item.label for item in activeFilterOptions"
+                  ng-change="resetPagination()">
           </select>
-
         </th>
         <th>
-          <label for="">{{'users.status' | translate}}</label>
-          <select class="form-control statusfilter" 
-            ng-model="currentActiveFilter"
-            ng-options="item.label for item in activeFilterOptions"
-            ng-change="resetPagination()">
+          <select class="form-control typefilter"
+                  ng-model="filters.type"
+                  ng-options="item.label for item in typeFilterOptions"
+                  ng-change="resetPagination()">
           </select>
         </th>
+        <th></th>
+        <th></th>
       </tr>
     </thead>
     <tbody>
       <tr ng-repeat="user in users">
         <td>
-          <span class="glyphicon" tooltip="{{user.Users.admin ? constants.admin : ''}}" ng-class="{'glyphicon-flash' : user.Users.admin}"></span>
+          <span>{{user.Users.user_name}}</span>
+        </td>
+        <td>
+          <span>{{user.Users.roles[0].permission_label}}</span>
         </td>
         <td>
-           <a href="#/users/{{user.Users.encoded_name}}">{{user.Users.user_name}}</a>
+          <span>
+            {{(user.Users.active ? 'users.active' : 'users.inactive') | translate}}
+          </span>
+        </td>
+        <td><span>{{user.Users.userTypeName}}</span></td>
+        <td><span>{{user.Users.groups.length ? user.Users.groups.join(' ') : '-'}}</span></td>
+        <td class="entity-actions">
+          <a href="#/users/{{user.Users.encodedName}}/edit">
+            <i class="fa fa-pencil"></i>
+          </a>
+          <a href ng-click="deleteUser(user.Users)">
+            <i class="fa fa-trash-o"></i>
+          </a>
         </td>
-        <td>{{user.Users.userTypeName}}</td>
-        <td><span ng-class="user.Users.active ? 'text-success' : 'text-danger'">{{(user.Users.active ? 'users.active' : 'users.inactive') | translate}}</span></td>
       </tr>
     </tbody>
   </table>
   <div ng-if="isLoading" class="spinner-container">
     <i class="fa fa-2x fa-spinner fa-spin" aria-hidden="true"></i>
   </div>
-  <div class="alert alert-info col-sm-12" ng-show="!users.length && !isLoading">
+  <div class="alert empty-table-alert col-sm-12" ng-show="!users.length && !isLoading">
     {{'common.alerts.nothingToDisplay' | translate: '{term: constants.users}'}}
   </div>
-  <div class="col-sm-12 table-bar">
+  <div class="col-sm-12 table-bar" ng-show="totalUsers > minRowsToShowPagination">
     <div class="pull-left filtered-info">
       <span>{{'common.filterInfo' | translate: '{showed: tableInfo.showed, total: tableInfo.total, term: constants.users}'}}</span>
       <span ng-show="isNotEmptyFilter">- <a href ng-click="clearFilters()">{{'common.controls.clearFilters' | translate}}</a></span>

+ 0 - 82
ambari-admin/src/main/resources/ui/admin-web/app/views/users/create.html

@@ -1,82 +0,0 @@
-<!--
-* 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.
--->
-<ol class="breadcrumb">
-  <li><a href="#/users">{{'common.users' | translate}}</a></li>
-  <li class="active">{{'users.create' | translate}}</li>
-</ol>
-<hr>
-<form class="form-horizontal create-user-form" role="form" novalidate name="form" autocomplete="off">
-  <div class="form-group" ng-class="{'has-error' : form.user_name.$error.required && form.submitted}">
-    <label for="username" class="col-sm-2 control-label">{{'users.username' | translate}}</label>
-    <div class="col-sm-10"
-         ng-class="{'has-error': form.user_name.$error.pattern}">
-      <input
-        autofocus
-        type="text"
-        id="username"
-        class="form-control username-input"
-        name="user_name"
-        placeholder="{{'users.userName' | translate}}"
-        ng-model="user.user_name"
-        ng-required="true"
-        ng-pattern="/^[^<>&`|\\]+$/"
-        ng-maxlength="80"
-        tooltip="{{'users.userNameTip' | translate}}"
-        autocomplete="off"
-        tooltip-trigger="focus">
-      <div class="alert alert-danger top-margin" ng-show="form.user_name.$error.required && form.submitted">{{'common.alerts.fieldIsRequired' | translate}}</div>
-    </div>
-  </div>
-  <div class="form-group">
-    <label for="" class="col-sm-2 control-label">{{'common.type' | translate}}</label>
-    <div class="col-sm-10">
-      <label for="" class="control-label">{{'common.local' | translate}}</label>
-    </div>
-  </div>
-  <div class="form-group">
-    <label for="" class="col-sm-2 control-label">{{'users.status' | translate}}</label>
-    <div class="col-sm-10">
-      <toggle-switch model="user.active" on-label="{{'users.active' | translate}}" off-label="{{'users.inactive' | translate}}" class="switch-primary userstatus" data-off-color="danger"></toggle-switch>
-    </div>
-  </div>
-  <div class="form-group">
-    <label for="" class="col-sm-2 control-label"><span class="glyphicon glyphicon-flash"></span>{{'users.ambariAdmin' | translate}}</label>
-    <div class="col-sm-10">
-      <toggle-switch ng-disabled="isCurrentUser" model="user.admin" on-label="{{'common.yes' | translate}}" off-label="{{'common.no' | translate}}" class="switch-primary userstatus" data-off-color="danger"></toggle-switch>
-    </div>
-    </div>
-  <div class="form-group" ng-class="{'has-error' : (form.password.$error.required && form.submitted) || form.confirmPassword.$error.passwordVerify}">
-    <label for="password" class="col-sm-2 control-label">{{'users.password' | translate}}</label>
-    <div class="col-sm-10">
-      <input type="password" class="form-control bottom-margin userpassword" name="password" placeholder="{{'users.password' | translate}}" required ng-model="user.password" autocomplete="off">
-      <input type="password" class="form-control bottom-margin userpasswordconfirm" name="confirmPassword" placeholder="{{'users.passwordConfirmation' | translate}}" required ng-model="user.passwordConfirmation"
-        password-verify="user.password" autocomplete="off">
-
-      <div class="alert alert-danger" ng-show='form.confirmPassword.$error.passwordVerify'>{{'users.alerts.wrongPassword' | translate}}</div>
-      <div class="alert alert-danger" ng-show='form.password.$error.required && form.submitted'>{{'users.alerts.passwordRequired' | translate}}</div>
-      
-    </div>
-  </div>
-  <div class="form-group">
-    <div class="col-sm-offset-2 col-sm-10">
-      <button class="btn btn-primary pull-right left-margin saveuser" ng-click="createUser()">{{'common.controls.save' | translate}}</button>
-      <a class="btn btn-default pull-right cancel" href ng-click="cancel()">{{'common.controls.cancel' | translate}}</a>
-    </div>
-  </div>
-      
-</form>

+ 8 - 5
ambari-admin/src/main/resources/ui/admin-web/bower.json

@@ -2,22 +2,25 @@
   "name": "adminconsole",
   "private": true,
   "dependencies": {
-    "bootstrap": "3.1.1",
-    "angular": "1.2.26",
-    "angular-route": "1.2.26",
+    "bootstrap": "3.3.7",
+    "angular": "1.5.11",
+    "angular-route": "1.5.11",
     "angular-bootstrap": "0.11.0",
     "underscore": "1.7.0",
     "restangular": "1.4.0",
     "angular-bootstrap-toggle-switch": "0.5.1",
-    "angular-animate": "1.2.26",
+    "angular-animate": "1.5.11",
     "angular-translate": "2.2.0",
     "font-awesome": "4.2.0"
   },
   "devDependencies": {
-    "angular-mocks": "1.2.26",
+    "angular-mocks": "1.5.11",
     "commonjs": "0.2.0",
     "chai": "1.8.0",
     "mocha": "1.14.0",
     "sinon": "1.10.3"
+  },
+  "resolutions": {
+    "angular": "1.5.11"
   }
 }

+ 5 - 5
ambari-admin/src/main/resources/ui/admin-web/gulpfile.js

@@ -24,10 +24,10 @@ var gulp = require('gulp');
 var $ = require('gulp-load-plugins')();
 
 gulp.task('styles', function () {
-  return gulp.src('app/styles/*.css')
+  return gulp.src('app/styles/**/*.css')
     .pipe($.order([
-      'app/styles/main.css',
-      'app/styles/custom-admin-ui.css'   // This should always be the last stylesheet. So it can be dropped and be effective on build time
+      'app/styles/theme/bootstrap-ambari.css',
+      'app/styles/main.css'
     ], { base: './' }))
     .pipe($.concat('main.css'))
     .pipe($.autoprefixer('last 1 version'))
@@ -64,8 +64,8 @@ gulp.task('images', function () {
 });
 
 gulp.task('fonts', function () {
-  return $.bowerFiles()
-    .pipe($.filter('**/*.{eot,svg,ttf,woff}'))
+  return gulp.src('app/bower_components/**/fonts/*.{eot,svg,ttf,woff}')
+    .pipe($.addSrc('app/assets/fonts/*'))
     .pipe($.flatten())
     .pipe(gulp.dest('dist/fonts'))
     .pipe($.size());

+ 4 - 4
ambari-admin/src/main/resources/ui/admin-web/package.json

@@ -5,19 +5,19 @@
   "devDependencies": {
     "bower": "1.3.8",
     "gulp": "^3.8.8",
+    "gulp-add-src": "^0.2.0",
     "gulp-autoprefixer": "0.0.7",
-    "gulp-bower-files": "0.2.1",
     "gulp-cache": "0.1.1",
     "gulp-clean": "0.2.4",
+    "gulp-concat": "2.6.0",
     "gulp-filter": "0.4.1",
     "gulp-flatten": "0.0.2",
     "gulp-load-plugins": "0.5.0",
-    "gulp-plumber": "0.6.6",
+    "gulp-order": "1.1.1",
+    "gulp-plumber": "1.1.0",
     "gulp-size": "0.3.0",
     "gulp-uglify": "0.2.1",
     "gulp-useref": "0.4.2",
-    "gulp-concat": "2.6.0",
-    "gulp-order": "1.1.1",
     "http-server": "0.6.1",
     "karma": "0.12.16",
     "karma-chrome-launcher": "0.1.4",

+ 5 - 9
ambari-admin/src/main/resources/ui/admin-web/test/unit/controllers/mainCtrl_test.js → ambari-admin/src/main/resources/ui/admin-web/test/unit/controllers/AppCtrl_test.js

@@ -16,12 +16,15 @@
  * limitations under the License.
  */
 
-describe('#MainCtrl', function () {
+describe('#AppCtrl', function () {
 
   var scope, ctrl, $httpBackend, $window, clusterService, deferred;
 
   beforeEach(function () {
     module('ambariAdminConsole', function ($provide) {
+      $provide.value('$route', {
+        current: null
+      });
       $provide.value('$window', {
         location: {
           pathname: 'http://c6401.ambari.apache.org:8080/views/ADMIN_VIEW/2.0.0/INSTANCE/#/'
@@ -116,7 +119,7 @@ describe('#MainCtrl', function () {
       });
       scope = $rootScope.$new();
       scope.$apply();
-      ctrl = $controller('MainCtrl', {
+      ctrl = $controller('AppCtrl', {
         $scope: scope
       });
     });
@@ -157,13 +160,6 @@ describe('#MainCtrl', function () {
       chai.expect(data.app.user).to.equal(undefined);
       $httpBackend.flush();
     });
-
-    it('should get visible view instances and show them in top nav menu', function() {
-      $httpBackend.flush();
-
-      chai.expect(scope.viewInstances.length).to.equal(1);
-      chai.expect(scope.viewInstances[0].instance_name).to.equal('VisibleInstance');
-    });
   });
 
   describe('roles loading', function () {

+ 102 - 0
ambari-admin/src/main/resources/ui/admin-web/test/unit/controllers/ClusterInformationCtrl_test.js

@@ -0,0 +1,102 @@
+/**
+ * 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.
+ */
+
+describe('ClusterInformationCtrl', function() {
+  beforeEach(module('ambariAdminConsole'));
+
+  var ctrl, $scope, Cluster, deferred, ConfirmationModal;
+
+  beforeEach(inject(function($controller, $rootScope, _Cluster_, _$q_, _ConfirmationModal_){
+    // The injector unwraps the underscores (_) from around the parameter names when matching
+    Cluster = _Cluster_;
+    ConfirmationModal = _ConfirmationModal_;
+    deferred = _$q_.defer();
+    $scope = $rootScope.$new();
+    $scope.$apply();
+    ctrl = $controller('ClusterInformationCtrl', {
+      $scope: $scope
+    });
+
+    spyOn(Cluster, 'getBlueprint').andReturn(deferred.promise);
+    spyOn(Cluster, 'editName').andReturn(deferred.promise);
+    spyOn(ConfirmationModal, 'show').andReturn(deferred.promise);
+  }));
+
+  describe('#getBlueprint', function() {
+    it('Cluster.getBlueprint should be called', function() {
+      $scope.cluster = {
+        Clusters: {
+          cluster_name: 'c1'
+        }
+      };
+      $scope.getBlueprint();
+      expect(Cluster.getBlueprint).toHaveBeenCalled();
+    });
+  });
+
+  describe('#toggleSaveButton', function() {
+    beforeEach(function() {
+      $scope.cluster = {
+        Clusters: {
+          cluster_name: 'c1'
+        }
+      };
+    });
+
+    it('isClusterNameEdited should be true', function() {
+      $scope.edit = {
+        clusterName: 'c2'
+      };
+      $scope.toggleSaveButton();
+      expect($scope.isClusterNameEdited).toBeTruthy();
+    });
+
+    it('isClusterNameEdited should be false', function() {
+      $scope.edit = {
+        clusterName: 'c1'
+      };
+      $scope.toggleSaveButton();
+      expect($scope.isClusterNameEdited).toBeFalsy();
+    });
+  });
+
+  describe('#confirmClusterNameChange', function() {
+    it('ConfirmationModal.show should be called', function() {
+      $scope.edit = {
+        clusterName: 'c1'
+      };
+      $scope.confirmClusterNameChange();
+      expect(ConfirmationModal.show).toHaveBeenCalled();
+    });
+  });
+
+  describe('#saveClusterName', function() {
+    it('Cluster.editName should be called', function() {
+      $scope.edit = {
+        clusterName: 'c1'
+      };
+      $scope.cluster = {
+        Clusters: {
+          cluster_name: 'c2'
+        }
+      };
+      $scope.saveClusterName();
+      expect(Cluster.editName).toHaveBeenCalledWith('c2', 'c1');
+    });
+  });
+});

+ 0 - 135
ambari-admin/src/main/resources/ui/admin-web/test/unit/controllers/CreateViewInstanceCtrl.js

@@ -1,135 +0,0 @@
-/**
- * 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.
- */
-
-describe('#CreateViewInstanceCtrl', function () {
-  var scope, ctrl, $httpBackend, View;
-
-  beforeEach(module('ambariAdminConsole', function($provide){
-    $provide.value('$routeParams', {viewId: 'TestView'});
-  }));
-
-  afterEach(function() {
-    $httpBackend.verifyNoOutstandingExpectation();
-    $httpBackend.verifyNoOutstandingRequest();
-  });
-
-  beforeEach(inject(function (_$httpBackend_, $rootScope, $controller, _View_, $q) {
-    View = _View_;
-    spyOn(View, 'createInstance').andReturn($q.defer().promise);
-    spyOn(View, 'getInstance').andReturn($q.defer().promise);
-
-    $httpBackend = _$httpBackend_;
-    $httpBackend.whenGET(/\/api\/v1\/views\/TestView\?.+/).respond(200, {
-      "versions": [{"ViewVersionInfo": {}}]
-    });
-    $httpBackend.whenGET(/\/api\/v1\/views\/TestView\/versions\/1\.0\.0/).respond(200, {
-      "ViewVersionInfo": {"parameters": [{"name": "n", "defaultValue": "d"}]}
-    });
-    $httpBackend.whenGET('template/modal/backdrop.html').respond(200, '<div></div>');
-    $httpBackend.whenGET('template/modal/window.html').respond(200, '<div></div>');
-    scope = $rootScope.$new();
-    ctrl = $controller('CreateViewInstanceCtrl', {$scope: scope});
-  }));
-
-  it('it should invoke View.createInstance on save', function () {
-    scope.form = {
-      instanceCreateForm: {
-        submitted: false,
-        $valid: true
-      }
-    };
-    $httpBackend.flush();
-    scope.instance = {};
-    scope.save();
-    expect(View.createInstance).toHaveBeenCalled();
-  });
-
-  it('should set default property value before creating view instance', function () {
-    scope.form = {
-      instanceCreateForm: {
-        $dirty: true
-      }
-    };
-    scope.instance = {};
-    scope.version = '1.0.0';
-    scope.isClone=false;
-    $httpBackend.expectGET('template/modal/backdrop.html');
-    $httpBackend.expectGET('template/modal/window.html');
-    $httpBackend.whenGET(/\/api\/v1\/clusters\?fields=Clusters\/cluster_id&_=\d+/).respond(200, {
-      "items" : [
-        {
-          "Clusters" : {
-            "cluster_name" : "c1",
-            "version" : "HDP-2.2"
-          }
-        }
-      ]
-    });
-    $httpBackend.whenGET(/\/api\/v1\/remoteclusters\?fields=ClusterInfo\/services,ClusterInfo\/cluster_id&_=\d+/).respond(200, {
-      "items" : [
-         {
-           "ClusterInfo" : {
-            "name" : "c1",
-            "services" : ["HDFS"]
-          }
-        }
-      ]
-    });
-    scope.$digest();
-    $httpBackend.flush();
-    chai.expect(scope.view.ViewVersionInfo.parameters[0].value).to.equal('d');
-    expect(View.getInstance).not.toHaveBeenCalled();
-  });
-
-  it('before cloning view instance confirm that View.getInstance is called', function () {
-    scope.form = {
-      instanceCreateForm: {
-        $dirty: true
-      }
-    };
-    scope.instance = {};
-    scope.version = '1.0.0';
-    scope.isClone=true;
-    $httpBackend.expectGET('template/modal/backdrop.html');
-    $httpBackend.expectGET('template/modal/window.html');
-    $httpBackend.whenGET(/\/api\/v1\/clusters\?fields=Clusters\/cluster_id&_=\d+/).respond(200, {
-      "items" : [
-        {
-          "Clusters" : {
-            "cluster_name" : "c1",
-            "version" : "HDP-2.2"
-          }
-        }
-      ]
-    });
-    $httpBackend.whenGET(/\/api\/v1\/remoteclusters\?fields=ClusterInfo\/services,ClusterInfo\/cluster_id&_=\d+/).respond(200, {
-      "items" : [
-         {
-           "ClusterInfo" : {
-            "name" : "c1",
-            "services" : ["HDFS"]
-          }
-        }
-      ]
-    });
-    scope.$digest();
-    $httpBackend.flush();
-    expect(View.getInstance).toHaveBeenCalled(); 
-  });
-
-});

+ 0 - 820
ambari-admin/src/main/resources/ui/admin-web/test/unit/controllers/clusters/UserAccessListCtrl_test.js

@@ -1,820 +0,0 @@
-/**
- * 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.
- */
-
-describe('#Cluster', function () {
-
-  describe('UserAccessListCtrl', function() {
-
-    var scope, ctrl, $t, $httpBackend, Cluster, deferred, Alert, mock;
-
-    beforeEach(module('ambariAdminConsole', function () {}));
-
-    beforeEach(inject(function($rootScope, $controller, _$translate_, _$httpBackend_, _Cluster_, _$q_, _Alert_) {
-      scope = $rootScope.$new();
-      $t = _$translate_.instant;
-      $httpBackend = _$httpBackend_;
-      Cluster = _Cluster_;
-      Alert = _Alert_;
-      deferred = {
-        createPrivileges: _$q_.defer(),
-        getPrivilegesForResource: _$q_.defer(),
-        getPrivilegesWithFilters: _$q_.defer(),
-        deletePrivileges: _$q_.defer(),
-        deleteMultiplePrivileges: _$q_.defer()
-      };
-      ctrl = $controller('UserAccessListCtrl', {
-        $scope: scope
-      });
-      mock = {
-        Cluster: Cluster,
-        Alert: Alert,
-        scope: scope
-      };
-      spyOn(Cluster, 'createPrivileges').andReturn(deferred.createPrivileges.promise);
-      spyOn(Cluster, 'deletePrivileges').andReturn(deferred.deletePrivileges.promise);
-      spyOn(Cluster, 'getPrivilegesForResource').andReturn(deferred.getPrivilegesForResource.promise);
-      spyOn(Cluster, 'getPrivilegesWithFilters').andReturn(deferred.getPrivilegesWithFilters.promise);
-      spyOn(Alert, 'success').andCallFake(angular.noop);
-      spyOn(Alert, 'error').andCallFake(angular.noop);
-      spyOn(scope, 'loadRoles').andCallFake(angular.noop);
-
-      $httpBackend.expectGET(/\/api\/v1\/permissions/).respond(200, {
-        items: []
-      });
-      $httpBackend.expectGET(/\/api\/v1\/users?.*/).respond(200, {
-        items:[]
-      });
-      $httpBackend.flush();
-    }));
-
-    describe('#clearFilters()', function () {
-
-      it('should clear filters and reset pagination', function () {
-        scope.currentPage = 2;
-        scope.currentNameFilter = 'a';
-        scope.roleFilterOptions = [
-          {
-            label: $t('common.all'),
-            value: ''
-          },
-          {
-            label: $t('users.roles.clusterUser'),
-            value: 'CLUSTER.USER'
-          }
-        ];
-        scope.currentRoleFilter = scope.roleFilterOptions[1];
-        scope.clearFilters();
-        expect(scope.currentNameFilter).toEqual('');
-        expect(scope.currentRoleFilter).toEqual({
-          label: $t('common.all'),
-          value: ''
-        });
-        expect(scope.currentPage).toEqual(1);
-      });
-
-    });
-
-    describe('#isNotEmptyFilter', function () {
-
-      var cases = [
-        {
-          currentNameFilter: '',
-          currentRoleFilter: null,
-          isNotEmptyFilter: false,
-          title: 'no filters'
-        },
-        {
-          currentNameFilter: '',
-          currentRoleFilter: {
-            value: ''
-          },
-          isNotEmptyFilter: false,
-          title: 'empty filters'
-        },
-        {
-          currentNameFilter: 'a',
-          currentRoleFilter: {
-            value: ''
-          },
-          isNotEmptyFilter: true,
-          title: 'name filter'
-        },
-        {
-          currentNameFilter: '0',
-          currentRoleFilter: {
-            value: ''
-          },
-          isNotEmptyFilter: true,
-          title: 'name filter with "0" as string'
-        },
-        {
-          currentNameFilter: '',
-          currentRoleFilter: {
-            value: 'CLUSTER.USER'
-          },
-          isNotEmptyFilter: true,
-          title: 'role filter'
-        },
-        {
-          currentNameFilter: 'a',
-          currentRoleFilter: {
-            value: 'GROUP'
-          },
-          isNotEmptyFilter: true,
-          title: 'all filters'
-        },
-        {
-          currentNameFilter: '0',
-          currentRoleFilter: {
-            value: 'GROUP'
-          },
-          isNotEmptyFilter: true,
-          title: 'all filters with "0" as string'
-        }
-      ];
-
-      cases.forEach(function (item) {
-        it(item.title, function () {
-          scope.currentNameFilter = item.currentNameFilter;
-          scope.currentRoleFilter = item.currentRoleFilter;
-          scope.$digest();
-          expect(scope.isNotEmptyFilter).toEqual(item.isNotEmptyFilter);
-        });
-      });
-
-    });
-
-    describe('#save() for Users', function(){
-      var user = {};
-
-      beforeEach(function() {
-        items1 = {
-            "href" : "http://abc.com:8080/api/v1/users/user1",
-            "Users" : { "user_name" : "user1" },
-            "privileges" : [
-              {
-                "href" : "http://abc.com:8080/api/v1/users/user1/privileges/222",
-                "PrivilegeInfo" : {
-                  "cluster_name" : "myCluster",
-                  "permission_label" : "Service Administrator",
-                  "permission_name" : "SERVICE.ADMINISTRATOR",
-                  "principal_name" : "mygroup2",
-                  "principal_type" : "GROUP",
-                  "privilege_id" : 222,
-                  "type" : "CLUSTER",
-                  "user_name" : "user1"
-                }
-              }, {
-                "href" : "http://abc.com:8080/api/v1/users/user1/privileges/111",
-                "PrivilegeInfo" : {
-                  "cluster_name" : "myCluster",
-                  "permission_label" : "Service Administrator",
-                  "permission_name" : "SERVICE.ADMINISTRATOR",
-                  "principal_name" : "mygroup",
-                  "principal_type" : "GROUP",
-                  "privilege_id" : 111,
-                  "type" : "CLUSTER",
-                  "user_name" : "user1"
-                }
-              }, {
-                "href" : "http://abc.com:8080/api/v1/users/user1/privileges/11",
-                "PrivilegeInfo" : {
-                  "cluster_name" : "myCluster",
-                  "permission_label" : "Cluster Administrator",
-                  "permission_name" : "CLUSTER.ADMINISTRATOR",
-                  "principal_name" : "user1",
-                  "principal_type" : "USER",
-                  "privilege_id" : 11,
-                  "type" : "CLUSTER",
-                  "user_name" : "user1"
-                }
-              }
-            ]
-          };
-
-        items2 =
-          {
-            "href" : "http://abc.com:8080/api/v1/users/user2",
-            "Users" : { "user_name" : "user2" },
-            "privileges" : [
-              {
-                "href" : "http://abc.com:8080/api/v1/users/user2/privileges/111",
-                "PrivilegeInfo" : {
-                  "cluster_name" : "myCluster",
-                  "permission_label" : "Service Administrator",
-                  "permission_name" : "SERVICE.ADMINISTRATOR",
-                  "principal_name" : "mygroup",
-                  "principal_type" : "GROUP",
-                  "privilege_id" : 111,
-                  "type" : "CLUSTER",
-                  "user_name" : "user2"
-                }
-              }, {
-                "href" : "http://abc.com:8080/api/v1/users/user2/privileges/22",
-                "PrivilegeInfo" : {
-                  "cluster_name" : "myCluster",
-                  "permission_label" : "Service Administrator",
-                  "permission_name" : "SERVICE.ADMINISTRATOR",
-                  "principal_name" : "user2",
-                  "principal_type" : "USER",
-                  "privilege_id" : 22,
-                  "type" : "CLUSTER",
-                  "user_name" : "user2"
-                }
-              }
-            ]
-          };
-
-        all_items = { "items": [items1, items2]};
-
-        scope.loadUsers();
-
-        spyOn(Cluster, 'deleteMultiplePrivileges').andCallFake(function(clusterId, privilege_ids) {
-          privilege_ids.forEach(function(privilege_id) {
-            items1.privileges.forEach(function(p, index) {
-              if (p.PrivilegeInfo.privilege_id === privilege_id) {
-                //Remove from array
-                items1.privileges.splice(index, 1);
-              }
-            });
-          });
-        });
-        spyOn(scope, 'addPrivilege').andCallFake(function(user) {
-          var p = {};
-          p.PrivilegeInfo = {};
-          p.PrivilegeInfo.privilege_id = user.privilege_id + 1;
-          p.PrivilegeInfo.permission_name = user.permission_name;
-          p.PrivilegeInfo.principal_type = 'USER';
-
-          items1.privileges.push(p);
-          scope.loadUsers();
-        });
-
-        deferred.getPrivilegesWithFilters.resolve(all_items);
-        deferred.getPrivilegesForResource.promise.then(function(data) {
-          var arrayOfPrivileges = data.items[0].privileges;
-          var privilegesOfTypeUser = [];
-          var privilegesOfTypeGroup = [];
-          for (var i = 0; i < arrayOfPrivileges.length; i++) {
-            if(arrayOfPrivileges[i].PrivilegeInfo.principal_type === "GROUP"){
-              privilegesOfTypeGroup.push(arrayOfPrivileges[i]);
-            } else {
-              privilegesOfTypeUser.push(arrayOfPrivileges[i].PrivilegeInfo);
-            }
-          }
-
-          var effectivePrivilege = scope.pickEffectivePrivilege(arrayOfPrivileges);
-          var effectivePrivilegeFromGroups = scope.pickEffectivePrivilege(privilegesOfTypeGroup);
-          user.principal_type = 'USER';
-          user.original_perm = effectivePrivilege.permission_name;
-          user.editable = (Cluster.ineditableRoles.indexOf(effectivePrivilege.permission_name) === -1);
-
-          //add a new privilege of type USER only if it is also the effective privilege considering the user's Group privileges
-          var curIndex = scope.getRoleRank(user.permission_name);
-          var prevIndex = -1;
-          if (privilegesOfTypeGroup.length !== 0) {
-            prevIndex = scope.getRoleRank(effectivePrivilegeFromGroups.permission_name);
-          }
-          if ((curIndex === 6) || (curIndex <= prevIndex)) {
-            var privilege_ids = [];
-            privilegesOfTypeUser.forEach(function(privilegeOfTypeUser) {
-              privilege_ids.push(privilegeOfTypeUser.privilege_id);
-            });
-
-            //delete all privileges of type USER, if they exist
-            //then add the privilege for the user, after which the user displays the effective privilege
-            if(privilege_ids.length !== 0) {
-              Cluster.deleteMultiplePrivileges(
-                123,
-                privilege_ids
-              );
-            }
-            scope.addPrivilege(user);
-          } else {
-            Alert.error($t('common.alerts.cannotSavePermissions'), "User's effective privilege through its Group(s) is higher than your selected privilege.");
-            scope.loadUsers();
-          }
-        });
-
-        scope.$apply();
-      });
-
-      it('Should save the Privilege equal to the user\'s group privileges. Should also remove any individual user privileges', function() {
-        //using 'user1' for updating the new privilege
-        user.principal_name = scope.users[0].principal_name;
-        user.principal_type = scope.users[0].principal_type;
-        user.privilege_id = scope.users[0].privilege_id;
-        user.permission_name = "SERVICE.ADMINISTRATOR";
-
-        deferred.getPrivilegesForResource.resolve({ "items" : [items1] });
-
-        scope.$apply();
-
-        expect(scope.users[0].permission_name).toEqual(user.permission_name);
-        expect(scope.users[0].privilege_id).toEqual(user.privilege_id + 1);
-
-        var oldPrivilege = {
-          "href" : "http://abc.com:8080/api/v1/users/user1/privileges/11",
-          "PrivilegeInfo" : {
-            "cluster_name" : "myCluster",
-            "permission_label" : "Cluster Administrator",
-            "permission_name" : "CLUSTER.ADMINISTRATOR",
-            "principal_name" : "user1",
-            "principal_type" : "USER",
-            "privilege_id" : 11,
-            "type" : "CLUSTER",
-            "user_name" : "user1"
-          }
-        };
-        var newPrivilege = {
-          "PrivilegeInfo" : {
-            "permission_name" : user.permission_name,
-            "privilege_id" : user.privilege_id+1,
-            "principal_type" : "USER",
-            "principal_name" : "user1",
-            "encoded_name" : "user1",
-            "original_perm" : user.permission_name,
-            "url" : "users/user1",
-            "editable" : true
-          }
-        };
-
-        //test if the individual user privilege CLUSTER.ADMINISTRATOR is removed from 'items1' by deletePrivilege()
-        expect(items1.privileges).toNotContain(oldPrivilege);
-
-        //test if the new privilege got added to 'items1' by addPrivilege()
-        expect(items1.privileges).toContain(newPrivilege);
-      });
-
-      it('Should save the Privilege greater than the user\'s group privileges. Should also remove any individual user privileges', function() {
-        //using 'user1' for updating the new privilege
-        user.principal_name = scope.users[0].principal_name;
-        user.principal_type = scope.users[0].principal_type;
-        user.privilege_id = scope.users[0].privilege_id;
-        user.permission_name = "CLUSTER.OPERATOR";
-
-        deferred.getPrivilegesForResource.resolve({ "items" : [items1] });
-        scope.$apply();
-
-        expect(scope.users[0].permission_name).toEqual(user.permission_name);
-        expect(scope.users[0].privilege_id).toEqual(user.privilege_id + 1);
-
-        var oldPrivilege = {
-          "href" : "http://abc.com:8080/api/v1/users/user1/privileges/11",
-          "PrivilegeInfo" : {
-            "cluster_name" : "myCluster",
-            "permission_label" : "Cluster Administrator",
-            "permission_name" : "CLUSTER.ADMINISTRATOR",
-            "principal_name" : "user1",
-            "principal_type" : "USER",
-            "privilege_id" : 11,
-            "type" : "CLUSTER",
-            "user_name" : "user1"
-          }
-        };
-        var newPrivilege = {
-          "PrivilegeInfo" : {
-            "permission_name" : user.permission_name,
-            "principal_name" : "user1",
-            "principal_type" : "USER",
-            "privilege_id" : user.privilege_id + 1,
-            "encoded_name" : "user1",
-            "original_perm" : user.permission_name,
-            "url" : "users/user1",
-            "editable" : true
-          }
-        };
-
-        //test if the individual user privilege CLUSTER.ADMINISTRATOR is removed from 'items1' by deletePrivilege()
-        expect(items1.privileges).toNotContain(oldPrivilege);
-
-        //test if the new privilege got added to 'items1' by addPrivilege()
-        expect(items1.privileges).toContain(newPrivilege);
-      });
-
-      it('Should NOT save the Privilege smaller than the user\'s group privileges. Should keep the user\'s original privileges intact', function() {
-        //using 'user1' for updating the new privilege
-        user.principal_name = scope.users[0].principal_name;
-        user.principal_type = scope.users[0].principal_type;
-        user.privilege_id = scope.users[0].privilege_id;
-        user.permission_name = "CLUSTER.USER";
-
-        deferred.getPrivilegesForResource.resolve({ "items" : [items1] });
-        scope.$apply();
-
-        expect(scope.users[0].permission_name).toEqual(user.original_perm);
-        expect(scope.users[0].privilege_id).toEqual(user.privilege_id);
-
-        var oldPrivilege = {
-          "href" : "http://abc.com:8080/api/v1/users/user1/privileges/11",
-          "PrivilegeInfo" : {
-            "cluster_name" : "myCluster",
-            "permission_label" : "Cluster Administrator",
-            "permission_name" : "CLUSTER.ADMINISTRATOR",
-            "principal_name" : "user1",
-            "principal_type" : "USER",
-            "privilege_id" : 11,
-            "type" : "CLUSTER",
-            "user_name" : "user1",
-            "encoded_name" : "user1",
-            "original_perm" : "CLUSTER.ADMINISTRATOR",
-            "url" : "users/user1",
-            "editable" : true
-          }
-        };
-        var newPrivilege = {
-          "PrivilegeInfo" : {
-            "permission_name" : user.permission_name,
-            "principal_name" : "user1",
-            "principal_type" : "USER",
-            "privilege_id" : user.privilege_id+1,
-            "encoded_name" : "user1",
-            "original_perm" : user.permission_name,
-            "url" : "users/user1",
-            "editable" : true
-          }
-        };
-
-        //test if the individual user privilege CLUSTER.ADMINISTRATOR is NOT removed from 'items1'
-        expect(items1.privileges).toContain(oldPrivilege);
-
-        //test if the new privilege is NOT added to 'items1'
-        expect(items1.privileges).toNotContain(newPrivilege);
-      });
-
-    });
-
-    describe('#save() for Groups', function() {
-      var user = {};
-
-      beforeEach(function() {
-        items1 = {
-          "href" : "http://abc.com:8080/api/v1/groups/mygroup",
-          "Groups" : { "group_name" : "mygroup" },
-          "privileges" : [
-            {
-              "href" : "http://abc.com:8080/api/v1/groups/mygroup/privileges/3359",
-              "PrivilegeInfo" : {
-                "cluster_name" : "myCluster",
-                "group_name" : "mygroup",
-                "permission_label" : "Service Administrator",
-                "permission_name" : "SERVICE.ADMINISTRATOR",
-                "principal_name" : "mygroup",
-                "principal_type" : "GROUP",
-                "privilege_id" : 3359,
-                "type" : "CLUSTER"
-              }
-            }
-          ]
-        };
-
-        items2 = {
-          "href" : "http://abc.com:8080/api/v1/groups/mygroup2",
-          "Groups" : { "group_name" : "mygroup2" },
-          "privileges" : [
-            {
-              "href" : "http://abc.com:8080/api/v1/groups/mygroup2/privileges/3356",
-              "PrivilegeInfo" : {
-                "cluster_name" : "myCluster",
-                "group_name" : "mygroup2",
-                "permission_label" : "Service Administrator",
-                "permission_name" : "SERVICE.ADMINISTRATOR",
-                "principal_name" : "mygroup2",
-                "principal_type" : "GROUP",
-                "privilege_id" : 3356,
-                "type" : "CLUSTER"
-              }
-            }
-          ]
-        };
-
-        all_items = { "items": [items1, items2]};
-
-        scope.loadUsers();
-
-        spyOn(Cluster, 'deleteMultiplePrivileges').andCallFake(function(clusterId, privilege_ids) {
-          privilege_ids.forEach(function(privilege_id) {
-            items1.privileges.forEach(function(p, index) {
-              if (p.PrivilegeInfo.privilege_id === privilege_id) {
-                //Remove from array
-                items1.privileges.splice(index, 1);
-              }
-            });
-          });
-        });
-        spyOn(scope, 'addPrivilege').andCallFake(function(user) {
-          var p = {};
-          p.PrivilegeInfo = {};
-          p.PrivilegeInfo.privilege_id = user.privilege_id + 1;
-          p.PrivilegeInfo.permission_name = user.permission_name;
-          p.PrivilegeInfo.principal_type = 'GROUP';
-
-          items1.privileges.push(p);
-          scope.loadUsers();
-        });
-
-        deferred.getPrivilegesWithFilters.resolve(all_items);
-        deferred.getPrivilegesForResource.promise.then(function(data) {
-          var arrayOfPrivileges = data.items[0].privileges;
-          var privilegesOfTypeGroup = [];
-          var privilege = scope.pickEffectivePrivilege(arrayOfPrivileges);
-          user.principal_type = 'GROUP';
-          user.original_perm = privilege.permission_name;
-          user.editable = (Cluster.ineditableRoles.indexOf(privilege.permission_name) === -1);
-
-          arrayOfPrivileges.forEach(function(privilegeOfTypeGroup){
-            if (privilegeOfTypeGroup.PrivilegeInfo.principal_type === "GROUP") {
-              privilegesOfTypeGroup.push(privilegeOfTypeGroup.PrivilegeInfo);
-            }
-          });
-
-          var privilege_ids = [];
-          privilegesOfTypeGroup.forEach(function(privilegeOfTypeGroup) {
-            privilege_ids.push(privilegeOfTypeGroup.privilege_id);
-          });
-
-          //delete all privileges of type GROUP, if they exist
-          //then add the privilege for the group, after which the group displays the effective privilege
-          if(privilege_ids.length !== 0) {
-            Cluster.deleteMultiplePrivileges(
-                123,
-                privilege_ids
-            );
-          }
-          scope.addPrivilege(user);
-        });
-
-        scope.$apply();
-      });
-
-      it('Should save the Privilege equal to the group\'s effective privilege. Should remove any other privileges of the group',function(){
-        //using 'mygroup' for updating the new privilege
-        user.principal_name = scope.users[0].principal_name;
-        user.principal_type = scope.users[0].principal_type;
-        user.privilege_id = scope.users[0].privilege_id;
-        user.permission_name = "SERVICE.ADMINISTRATOR";
-
-        deferred.getPrivilegesForResource.resolve({ "items" : [items1] });
-
-        scope.$apply();
-
-        expect(scope.users[0].permission_name).toEqual(user.permission_name);
-        expect(scope.users[0].privilege_id).toEqual(user.privilege_id + 1);
-
-        var oldPrivilege = {
-          "PrivilegeInfo" : {
-            "cluster_name" : "myCluster",
-            "group_name" : "mygroup",
-            "permission_label" : "Service Administrator",
-            "permission_name" : "SERVICE.ADMINISTRATOR",
-            "principal_name" : "mygroup",
-            "principal_type" : "GROUP",
-            "privilege_id" : 3359,
-            "type" : "CLUSTER"
-          }
-        };
-        var newPrivilege = {
-          "PrivilegeInfo" : {
-            "privilege_id" : user.privilege_id + 1,
-            "permission_name" : user.permission_name,
-            "principal_type" : "GROUP",
-            "principal_name" : "mygroup",
-            "encoded_name" : "mygroup",
-            "original_perm" : user.permission_name,
-            "url" : "groups/mygroup/edit",
-            "editable" : true
-          }
-        };
-
-        //test if the older privilege is no longer present in 'items1'
-        expect(items1.privileges).toNotContain(oldPrivilege);
-
-        //test if the new privilege is added to 'items1'
-        expect(items1.privileges).toContain(newPrivilege);
-      });
-
-      it('Should save the Privilege greater than the group\'s effective privilege. Should remove any other privileges of the group',function(){
-        //using 'mygroup' for updating the new privilege
-        user.principal_name = scope.users[0].principal_name;
-        user.principal_type = scope.users[0].principal_type;
-        user.privilege_id = scope.users[0].privilege_id;
-        user.permission_name = "CLUSTER.ADMINISTRATOR";
-
-        deferred.getPrivilegesForResource.resolve({ "items" : [items1] });
-
-        scope.$apply();
-
-        expect(scope.users[0].permission_name).toEqual(user.permission_name);
-        expect(scope.users[0].privilege_id).toEqual(user.privilege_id + 1);
-
-        var oldPrivilege = {
-          "PrivilegeInfo" : {
-            "cluster_name" : "myCluster",
-            "group_name" : "mygroup",
-            "permission_label" : "Service Administrator",
-            "permission_name" : "SERVICE.ADMINISTRATOR",
-            "principal_name" : "mygroup",
-            "principal_type" : "GROUP",
-            "privilege_id" : 3359,
-            "type" : "CLUSTER"
-          }
-        };
-        var newPrivilege = {
-          "PrivilegeInfo" : {
-            "privilege_id" : user.privilege_id + 1,
-            "permission_name" : user.permission_name,
-            "principal_type" : "GROUP",
-            "principal_name" : "mygroup",
-            "encoded_name" : "mygroup",
-            "original_perm" : user.permission_name,
-            "url" : "groups/mygroup/edit",
-            "editable" : true
-          }
-        };
-
-        //test if the older privilege is no longer present in 'items1'
-        expect(items1.privileges).toNotContain(oldPrivilege);
-
-        //test if the new privilege is added to 'items1'
-        expect(items1.privileges).toContain(newPrivilege);
-      });
-
-      it('Should save the Privilege lesser than the group\'s effective privilege. Should remove any other privileges of the group', function() {
-        //using 'mygroup' for updating the new privilege
-        user.principal_name = scope.users[0].principal_name;
-        user.principal_type = scope.users[0].principal_type;
-        user.privilege_id = scope.users[0].privilege_id;
-        user.permission_name = "CLUSTER.USER";
-
-        deferred.getPrivilegesForResource.resolve({ "items" : [items1] });
-
-        scope.$apply();
-
-        expect(scope.users[0].permission_name).toEqual(user.permission_name);
-        expect(scope.users[0].privilege_id).toEqual(user.privilege_id + 1);
-
-        var oldPrivilege = {
-          "PrivilegeInfo" : {
-            "cluster_name" : "myCluster",
-            "group_name" : "mygroup",
-            "permission_label" : "Service Administrator",
-            "permission_name" : "SERVICE.ADMINISTRATOR",
-            "principal_name" : "mygroup",
-            "principal_type" : "GROUP",
-            "privilege_id" : 3359,
-            "type" : "CLUSTER"
-          }
-        };
-        var newPrivilege = {
-          "PrivilegeInfo" : {
-            "privilege_id" : user.privilege_id + 1,
-            "permission_name" : user.permission_name,
-            "principal_type" : "GROUP",
-            "principal_name" : "mygroup",
-            "encoded_name" : "mygroup",
-            "original_perm" : user.permission_name,
-            "url" : "groups/mygroup/edit",
-            "editable" : true
-          }
-        };
-
-        //test if the older privilege is no longer present in 'items1'
-        expect(items1.privileges).toNotContain(oldPrivilege);
-
-        //test if the new privilege is added to 'items1'
-        expect(items1.privileges).toContain(newPrivilege);
-      });
-
-    });
-
-    describe('#pickEffectivePrivilege()', function() {
-      var cases = [{
-          "test" : [{
-            "href" : "http://abc.com:8080/api/v1/groups/mygroup1",
-            "PrivilegeInfo" : {
-              "instance_name" : "jobs_view",
-              "permission_label" : "View User",
-              "permission_name" : "VIEW.USER",
-              "principal_name" : "mygroup1",
-              "principal_type" : "GROUP",
-              "privilege_id" : 111,
-              "type" : "VIEW",
-              "user_name" : "mygroup1",
-              "view_name" : "JOBS"
-            }
-          }],
-          "result":{
-            "permission_name": "CLUSTER.NONE"
-          }
-        }, {
-          "test": [{
-            "href" : "http://abc.com:8080/api/v1/groups/mygroup2",
-            "PrivilegeInfo" : {
-              "cluster_name":"mycluster",
-              "permission_label" : "Cluster User",
-              "permission_name" : "CLUSTER.USER",
-              "principal_name" : "mygroup2",
-              "principal_type" : "GROUP",
-              "privilege_id" : 222,
-              "type" : "CLUSTER",
-              "user_name":"mygroup2"
-            }
-          }],
-          "result":{
-            "permission_name": "CLUSTER.USER"
-          }
-        }, {
-          "test":[{
-            "href" : "http://abc.com:8080/api/v1/groups/mygroup3",
-            "PrivilegeInfo" : {
-              "cluster_name":"mycluster",
-              "permission_label" : "Cluster User",
-              "permission_name" : "CLUSTER.USER",
-              "principal_name" : "mygroup3",
-              "principal_type" : "GROUP",
-              "privilege_id" : 333,
-              "type" : "CLUSTER",
-              "user_name":"mygroup3"
-            }
-          }, {
-            "href" : "http://abc.com:8080/api/v1/groups/mygroup3",
-            "PrivilegeInfo" : {
-              "instance_name": "jobs_view",
-              "permission_label" : "View User",
-              "permission_name" : "VIEW.USER",
-              "principal_name" : "mygroup3",
-              "principal_type" : "GROUP",
-              "privilege_id" : 3333,
-              "type" : "VIEW",
-              "user_name":"mygroup3",
-              "view_name":"JOBS"
-            }
-          }],
-          "result":{
-            "permission_name": "CLUSTER.USER"
-          }
-        }, {
-          "test": [{
-            "href" : "http://abc.com:8080/api/v1/users/myuser1/privileges/11",
-            "PrivilegeInfo" : {
-              "instance_name": "jobs_view",
-              "permission_label" : "View User",
-              "permission_name" : "VIEW.USER",
-              "principal_name" : "myuser1",
-              "principal_type" : "USER",
-              "privilege_id" : 11,
-              "type" : "VIEW",
-              "user_name":"myuser1",
-              "view_name":"JOBS"
-            }
-          }],
-          "result":{
-            "permission_name": "CLUSTER.NONE"
-          }
-        }, {
-          "test":[{
-            "href" : "http://abc.com:8080/api/v1/users/myuser2/privileges/22",
-            "PrivilegeInfo" : {
-              "cluster_name":"mycluster",
-              "permission_label" : "Cluster Administrator",
-              "permission_name" : "CLUSTER.ADMINISTRATOR",
-              "principal_name" : "myuser2",
-              "principal_type" : "USER",
-              "privilege_id" : 22,
-              "type" : "CLUSTER",
-              "user_name":"myuser2"
-            }
-          }],
-          "result":{
-            "permission_name": "CLUSTER.ADMINISTRATOR"
-          }
-        }
-      ];
-
-      it('User/Group with only View User permission must show \'None\' as the Cluster Permission, otherwise show the effective privilege', function(){
-        var effectivePrivilege;
-        cases.forEach(function (item){
-          effectivePrivilege = scope.pickEffectivePrivilege(item.test);
-          scope.$apply();
-          expect(effectivePrivilege.permission_name).toEqual(item.result.permission_name);
-        });
-      });
-    });
-
-  });
-});

+ 6 - 6
ambari-admin/src/main/resources/ui/admin-web/test/unit/controllers/groups/GroupsListCtrl_test.js → ambari-admin/src/main/resources/ui/admin-web/test/unit/controllers/userManagement/GroupsListCtrl_test.js

@@ -37,14 +37,14 @@ describe('#Cluster', function () {
 
       it('should clear filters and reset pagination', function () {
         scope.currentPage = 2;
-        scope.currentNameFilter = 'a';
-        scope.currentTypeFilter = {
+        scope.filter.name = 'a';
+        scope.filter.type = {
           label: $t('common.local'),
           value: false
         };
         scope.clearFilters();
-        expect(scope.currentNameFilter).toEqual('');
-        expect(scope.currentTypeFilter).toEqual({
+        expect(scope.filter.name).toEqual('');
+        expect(scope.filter.type).toEqual({
           label: $t('common.all'),
           value: '*'
         });
@@ -115,8 +115,8 @@ describe('#Cluster', function () {
       cases.forEach(function (item) {
         it(item.title, function () {
           $httpBackend.expectGET(/\/api\/v1\/groups/).respond(200);
-          scope.currentNameFilter = item.currentNameFilter;
-          scope.currentTypeFilter = item.currentTypeFilter;
+          scope.filter.name = item.currentNameFilter;
+          scope.filter.type = item.currentTypeFilter;
           scope.$digest();
           expect(scope.isNotEmptyFilter).toEqual(item.isNotEmptyFilter);
         });

+ 9 - 48
ambari-admin/src/main/resources/ui/admin-web/test/unit/controllers/users/UsersListCtrl_test.js → ambari-admin/src/main/resources/ui/admin-web/test/unit/controllers/userManagement/UsersListCtrl_test.js

@@ -37,28 +37,26 @@ describe('#Cluster', function () {
 
       it('should clear filters and reset pagination', function () {
         scope.currentPage = 2;
-        scope.currentNameFilter = 'a';
-        scope.currentActiveFilter = {
+        scope.filters.name = 'a';
+        scope.filters.status = {
           label: $t('common.local'),
           value: false
         };
-        scope.currentTypeFilter = {
+        scope.filters.type = {
           label: $t('common.local'),
           value: 'LOCAL'
         };
-        scope.adminFilter = true;
         scope.clearFilters();
-        expect(scope.currentNameFilter).toEqual('');
-        expect(scope.currentActiveFilter).toEqual({
+        expect(scope.filters.name).toEqual('');
+        expect(scope.filters.status).toEqual({
           label: $t('common.all'),
           value: '*'
         });
-        expect(scope.currentTypeFilter).toEqual({
+        expect(scope.filters.type).toEqual({
           label: $t('common.all'),
           value: '*'
         });
         expect(scope.currentPage).toEqual(1);
-        expect(scope.adminFilter).toBe(false);
       });
 
     });
@@ -71,7 +69,6 @@ describe('#Cluster', function () {
           currentTypeFilter: null,
           currentActiveFilter: null,
           isNotEmptyFilter: false,
-          adminFilter: false,
           title: 'no filters'
         },
         {
@@ -82,7 +79,6 @@ describe('#Cluster', function () {
           currentActiveFilter: {
             value: '*'
           },
-          adminFilter: false,
           isNotEmptyFilter: false,
           title: 'empty filters'
         },
@@ -94,7 +90,6 @@ describe('#Cluster', function () {
           currentActiveFilter: {
             value: '*'
           },
-          adminFilter: false,
           isNotEmptyFilter: true,
           title: 'name filter'
         },
@@ -106,7 +101,6 @@ describe('#Cluster', function () {
           currentActiveFilter: {
             value: '*'
           },
-          adminFilter: false,
           isNotEmptyFilter: true,
           title: 'name filter with "0" as string'
         },
@@ -118,7 +112,6 @@ describe('#Cluster', function () {
           currentActiveFilter: {
             value: '*'
           },
-          adminFilter: false,
           isNotEmptyFilter: true,
           title: 'type filter'
         },
@@ -130,22 +123,9 @@ describe('#Cluster', function () {
           currentActiveFilter: {
             value: false
           },
-          adminFilter: false,
           isNotEmptyFilter: true,
           title: 'activity filter'
         },
-        {
-          currentNameFilter: '',
-          currentTypeFilter: {
-            value: '*'
-          },
-          currentActiveFilter: {
-            value: '*'
-          },
-          adminFilter: true,
-          isNotEmptyFilter: true,
-          title: 'admin filter'
-        },
         {
           currentNameFilter: 'a',
           currentTypeFilter: {
@@ -154,7 +134,6 @@ describe('#Cluster', function () {
           currentActiveFilter: {
             value: '*'
           },
-          adminFilter: false,
           isNotEmptyFilter: true,
           title: 'name and type filters'
         },
@@ -166,7 +145,6 @@ describe('#Cluster', function () {
           currentActiveFilter: {
             value: false
           },
-          adminFilter: false,
           isNotEmptyFilter: true,
           title: 'name and activity filters'
         },
@@ -178,7 +156,6 @@ describe('#Cluster', function () {
           currentActiveFilter: {
             value: '*'
           },
-          adminFilter: true,
           isNotEmptyFilter: true,
           title: 'name and admin filters'
         },
@@ -190,7 +167,6 @@ describe('#Cluster', function () {
           currentActiveFilter: {
             value: '*'
           },
-          adminFilter: false,
           isNotEmptyFilter: true,
           title: 'name and type filters with "0" as string'
         },
@@ -202,7 +178,6 @@ describe('#Cluster', function () {
           currentActiveFilter: {
             value: false
           },
-          adminFilter: false,
           isNotEmptyFilter: true,
           title: 'name and activity filters with "0" as string'
         },
@@ -214,7 +189,6 @@ describe('#Cluster', function () {
           currentActiveFilter: {
             value: '*'
           },
-          adminFilter: true,
           isNotEmptyFilter: true,
           title: 'name and admin filters with "0" as string'
         },
@@ -226,7 +200,6 @@ describe('#Cluster', function () {
           currentActiveFilter: {
             value: false
           },
-          adminFilter: false,
           isNotEmptyFilter: true,
           title: 'type and activity filters'
         },
@@ -238,7 +211,6 @@ describe('#Cluster', function () {
           currentActiveFilter: {
             value: '*'
           },
-          adminFilter: true,
           isNotEmptyFilter: true,
           title: 'type and admin filters'
         },
@@ -250,7 +222,6 @@ describe('#Cluster', function () {
           currentActiveFilter: {
             value: false
           },
-          adminFilter: true,
           isNotEmptyFilter: true,
           title: 'activity and admin filters'
         },
@@ -262,7 +233,6 @@ describe('#Cluster', function () {
           currentActiveFilter: {
             value: false
           },
-          adminFilter: true,
           isNotEmptyFilter: true,
           title: 'all filters except name one'
         },
@@ -274,7 +244,6 @@ describe('#Cluster', function () {
           currentActiveFilter: {
             value: false
           },
-          adminFilter: true,
           isNotEmptyFilter: true,
           title: 'all filters except type one'
         },
@@ -286,7 +255,6 @@ describe('#Cluster', function () {
           currentActiveFilter: {
             value: '*'
           },
-          adminFilter: true,
           isNotEmptyFilter: true,
           title: 'all filters except activity one'
         },
@@ -298,7 +266,6 @@ describe('#Cluster', function () {
           currentActiveFilter: {
             value: false
           },
-          adminFilter: false,
           isNotEmptyFilter: true,
           title: 'all filters except admin one'
         },
@@ -310,7 +277,6 @@ describe('#Cluster', function () {
           currentActiveFilter: {
             value: false
           },
-          adminFilter: true,
           isNotEmptyFilter: true,
           title: 'all filters with "0" as string except type one'
         },
@@ -322,7 +288,6 @@ describe('#Cluster', function () {
           currentActiveFilter: {
             value: '*'
           },
-          adminFilter: true,
           isNotEmptyFilter: true,
           title: 'all filters with "0" as string except activity one'
         },
@@ -334,7 +299,6 @@ describe('#Cluster', function () {
           currentActiveFilter: {
             value: false
           },
-          adminFilter: false,
           isNotEmptyFilter: true,
           title: 'all filters with "0" as string except admin one'
         },
@@ -346,7 +310,6 @@ describe('#Cluster', function () {
           currentActiveFilter: {
             value: 'LOCAL'
           },
-          adminFilter: true,
           isNotEmptyFilter: true,
           title: 'all filters'
         },
@@ -358,7 +321,6 @@ describe('#Cluster', function () {
           currentActiveFilter: {
             value: 'LOCAL'
           },
-          adminFilter: true,
           isNotEmptyFilter: true,
           title: 'all filters with "0" as string'
         }
@@ -367,10 +329,9 @@ describe('#Cluster', function () {
       cases.forEach(function (item) {
         it(item.title, function () {
           $httpBackend.expectGET(/\/api\/v1\/users/).respond(200);
-          scope.currentNameFilter = item.currentNameFilter;
-          scope.currentActiveFilter = item.currentActiveFilter;
-          scope.currentTypeFilter = item.currentTypeFilter;
-          scope.adminFilter = item.adminFilter;
+          scope.filters.name = item.currentNameFilter;
+          scope.filters.status = item.currentActiveFilter;
+          scope.filters.type = item.currentTypeFilter;
           scope.$digest();
           expect(scope.isNotEmptyFilter).toEqual(item.isNotEmptyFilter);
         });

+ 9 - 2
ambari-admin/src/main/resources/ui/admin-web/test/unit/services/Utility_test.js

@@ -25,7 +25,13 @@ describe('Utility Service', function () {
 
   beforeEach(function () {
     module('ambariAdminConsole', function ($provide) {
-      $provide.value('$window', {});
+      $provide.value('$window', {
+        localStorage: {
+          getItem: function() {return '{}';},
+          setItem: function() {}
+        },
+        location: {}
+      });
     });
     inject(function (_Utility_, _$httpBackend_, $rootScope, $controller, _Cluster_, _$q_) {
       Utility = _Utility_;
@@ -39,7 +45,7 @@ describe('Utility Service', function () {
       });
       scope = $rootScope.$new();
       scope.$apply();
-      ctrl = $controller('MainCtrl', {
+      ctrl = $controller('AppCtrl', {
         $scope: scope
       });
       httpBackend.whenGET(/\/persist\/user-pref-.*/).respond(200, {});
@@ -54,6 +60,7 @@ describe('Utility Service', function () {
       httpBackend.whenGET(/\/api\/v1\/views.+/).respond(200, {
         items: []
       });
+      httpBackend.whenGET("views/clusters/clusterInformation.html").respond(200, {});
     });
   });
 

+ 2 - 2
ambari-agent/pom.xml

@@ -318,8 +318,7 @@
                     <include>/cred/lib/*.jar</include>
                     <include>/tools/*.jar</include>
                     <include>/cache/stacks/HDP/2.1.GlusterFS/services/STORM/package/files/wordCount.jar</include>
-                    <include>/cache/stacks/HDP/2.0.6/hooks/before-START/files/fast-hdfs-resource.jar</include>
-                    <include>/cache/stacks/HDP/3.0/hooks/before-START/files/fast-hdfs-resource.jar</include>
+                    <include>/cache/stack-hooks/before-START/files/fast-hdfs-resource.jar</include>
                     <include>/cache/common-services/STORM/0.9.1/package/files/wordCount.jar</include>
                   </includes>
                 </source>
@@ -487,6 +486,7 @@
                   <directory>${resourcesFolder}</directory>
                   <includes>
                     <include>common-services/**</include>
+                    <include>stack-hooks/**</include>
                     <include>stacks/stack_advisor.py</include>
                     <include>stacks/${stack.distribution}/**/*</include>
                   </includes>

+ 4 - 1
ambari-agent/src/main/python/ambari_agent/ActionQueue.py

@@ -67,6 +67,7 @@ class ActionQueue(threading.Thread):
   ROLE_COMMAND_STOP = 'STOP'
   ROLE_COMMAND_CUSTOM_COMMAND = 'CUSTOM_COMMAND'
   CUSTOM_COMMAND_RESTART = 'RESTART'
+  CUSTOM_COMMAND_RECONFIGURE = 'RECONFIGURE'
   CUSTOM_COMMAND_START = ROLE_COMMAND_START
 
   IN_PROGRESS_STATUS = 'IN_PROGRESS'
@@ -427,7 +428,9 @@ class ActionQueue(threading.Thread):
              (command['roleCommand'] == self.ROLE_COMMAND_INSTALL and component in LiveStatus.CLIENT_COMPONENTS) or
                (command['roleCommand'] == self.ROLE_COMMAND_CUSTOM_COMMAND and
                   'custom_command' in command['hostLevelParams'] and
-                      command['hostLevelParams']['custom_command'] in (self.CUSTOM_COMMAND_RESTART, self.CUSTOM_COMMAND_START))):
+                      command['hostLevelParams']['custom_command'] in (self.CUSTOM_COMMAND_RESTART,
+                                                                       self.CUSTOM_COMMAND_START,
+                                                                       self.CUSTOM_COMMAND_RECONFIGURE))):
         configHandler.write_actual_component(command['role'],
                                              command['configurationTags'])
         if 'clientsToUpdateConfigs' in command['hostLevelParams'] and command['hostLevelParams']['clientsToUpdateConfigs']:

+ 0 - 3
ambari-agent/src/main/python/ambari_agent/AmbariAgent.py

@@ -49,9 +49,6 @@ def main():
 
   mergedArgs = [PYTHON, AGENT_SCRIPT] + args
 
-  # Become a parent for all subprocesses
-  os.setpgrp()
-
   try:
     while status == AGENT_AUTO_RESTART_EXIT_CODE:
       mainProcess = subprocess.Popen(mergedArgs)

+ 3 - 71
ambari-agent/src/main/python/ambari_agent/AmbariConfig.py

@@ -30,6 +30,9 @@ from ambari_commons.os_family_impl import OsFamilyFuncImpl, OsFamilyImpl
 
 logger = logging.getLogger(__name__)
 
+"""
+The below config is necessary only for unit tests.
+"""
 content = """
 
 [server]
@@ -75,77 +78,6 @@ log_command_executes = 0
 
 """.format(ps=os.sep)
 
-servicesToPidNames = {
-  'GLUSTERFS': 'glusterd.pid$',
-  'NAMENODE': 'hadoop-{USER}-namenode.pid$',
-  'SECONDARY_NAMENODE': 'hadoop-{USER}-secondarynamenode.pid$',
-  'DATANODE': 'hadoop-{USER}-datanode.pid$',
-  'JOBTRACKER': 'hadoop-{USER}-jobtracker.pid$',
-  'TASKTRACKER': 'hadoop-{USER}-tasktracker.pid$',
-  'RESOURCEMANAGER': 'yarn-{USER}-resourcemanager.pid$',
-  'NODEMANAGER': 'yarn-{USER}-nodemanager.pid$',
-  'HISTORYSERVER': 'mapred-{USER}-historyserver.pid$',
-  'JOURNALNODE': 'hadoop-{USER}-journalnode.pid$',
-  'ZKFC': 'hadoop-{USER}-zkfc.pid$',
-  'OOZIE_SERVER': 'oozie.pid',
-  'ZOOKEEPER_SERVER': 'zookeeper_server.pid',
-  'FLUME_SERVER': 'flume-node.pid',
-  'TEMPLETON_SERVER': 'templeton.pid',
-  'HBASE_MASTER': 'hbase-{USER}-master.pid',
-  'HBASE_REGIONSERVER': 'hbase-{USER}-regionserver.pid',
-  'HCATALOG_SERVER': 'webhcat.pid',
-  'KERBEROS_SERVER': 'kadmind.pid',
-  'HIVE_SERVER': 'hive-server.pid',
-  'HIVE_METASTORE': 'hive.pid',
-  'HIVE_SERVER_INTERACTIVE': 'hive-interactive.pid',
-  'MYSQL_SERVER': 'mysqld.pid',
-  'HUE_SERVER': '/var/run/hue/supervisor.pid',
-  'WEBHCAT_SERVER': 'webhcat.pid',
-}
-
-# Each service, which's pid depends on user should provide user mapping
-servicesToLinuxUser = {
-  'NAMENODE': 'hdfs_user',
-  'SECONDARY_NAMENODE': 'hdfs_user',
-  'DATANODE': 'hdfs_user',
-  'JOURNALNODE': 'hdfs_user',
-  'ZKFC': 'hdfs_user',
-  'JOBTRACKER': 'mapred_user',
-  'TASKTRACKER': 'mapred_user',
-  'RESOURCEMANAGER': 'yarn_user',
-  'NODEMANAGER': 'yarn_user',
-  'HISTORYSERVER': 'mapred_user',
-  'HBASE_MASTER': 'hbase_user',
-  'HBASE_REGIONSERVER': 'hbase_user',
-}
-
-pidPathVars = [
-  {'var': 'glusterfs_pid_dir_prefix',
-   'defaultValue': '/var/run'},
-  {'var': 'hadoop_pid_dir_prefix',
-   'defaultValue': '/var/run/hadoop'},
-  {'var': 'hadoop_pid_dir_prefix',
-   'defaultValue': '/var/run/hadoop'},
-  {'var': 'hbase_pid_dir',
-   'defaultValue': '/var/run/hbase'},
-  {'var': 'zk_pid_dir',
-   'defaultValue': '/var/run/zookeeper'},
-  {'var': 'oozie_pid_dir',
-   'defaultValue': '/var/run/oozie'},
-  {'var': 'hcat_pid_dir',
-   'defaultValue': '/var/run/webhcat'},
-  {'var': 'hive_pid_dir',
-   'defaultValue': '/var/run/hive'},
-  {'var': 'mysqld_pid_dir',
-   'defaultValue': '/var/run/mysqld'},
-  {'var': 'hcat_pid_dir',
-   'defaultValue': '/var/run/webhcat'},
-  {'var': 'yarn_pid_dir_prefix',
-   'defaultValue': '/var/run/hadoop-yarn'},
-  {'var': 'mapred_pid_dir_prefix',
-   'defaultValue': '/var/run/hadoop-mapreduce'},
-]
-
 
 class AmbariConfig:
   TWO_WAY_SSL_PROPERTY = "security.server.two_way_ssl"

+ 5 - 1
ambari-agent/src/main/python/ambari_agent/CustomServiceOrchestrator.py

@@ -281,7 +281,11 @@ class CustomServiceOrchestrator():
 
     for config_type, credentials in configtype_credentials.items():
       config = commandJson['configurations'][config_type]
-      file_path = os.path.join(self.getProviderDirectory(serviceName), "{0}.jceks".format(config_type))
+      if 'role' in commandJson and commandJson['role']:
+        roleName = commandJson['role']
+        file_path = os.path.join(self.getProviderDirectory(roleName), "{0}.jceks".format(config_type))
+      else:
+        file_path = os.path.join(self.getProviderDirectory(serviceName), "{0}.jceks".format(config_type))
       if os.path.exists(file_path):
         os.remove(file_path)
       provider_path = 'jceks://file{file_path}'.format(file_path=file_path)

+ 2 - 3
ambari-agent/src/main/python/ambari_agent/FileCache.py

@@ -83,11 +83,10 @@ class FileCache():
     Returns a base directory for hooks
     """
     try:
-      hooks_subpath = command['commandParams']['hooks_folder']
+      hooks_path = command['commandParams']['hooks_folder']
     except KeyError:
       return None
-    subpath = os.path.join(self.STACKS_CACHE_DIRECTORY, hooks_subpath)
-    return self.provide_directory(self.cache_dir, subpath,
+    return self.provide_directory(self.cache_dir, hooks_path,
                                   server_url_prefix)
 
 

+ 76 - 54
ambari-agent/src/main/python/ambari_agent/Hardware.py

@@ -44,55 +44,72 @@ class Hardware:
   IGNORE_DEVICES = ["proc", "tmpfs", "cgroup", "mqueue", "shm"]
   LINUX_PATH_SEP = "/"
 
-  def __init__(self, config):
+  def __init__(self, config=None, cache_info=True):
+    """
+    Initialize hardware object with available metrics. Metrics cache could be
+     disabled by setting cache_info to False
+
+    :param config Ambari Agent Configuration
+    :param cache_info initialize hardware dictionary with available metrics
+
+    :type config AmbariConfig
+    :type cache_info bool
+    """
+    self.config = config
+    self._hardware = None
+
+    if cache_info:
+      self._cache_hardware_info()
+
+  def _cache_hardware_info(self):
+    """
+    Creating cache with hardware information
+    """
     logger.info("Initializing host system information.")
-    self.hardware = {
-      'mounts': Hardware.osdisks()
+    self._hardware = {
+      'mounts': self.osdisks()
     }
-    self.config = config
-    self.hardware.update(Facter(self.config).facterInfo())
-    logger.info("Host system information: %s", self.hardware)
+    self._hardware.update(Facter(self.config).facterInfo())
+    logger.info("Host system information: %s", self._hardware)
 
-  @classmethod
-  def _parse_df_line(cls, line):
+  def _parse_df(self, lines):
     """
-      Initialize data-structure from string in specific 'df' command output format
+      Generator, which parses df command output and yields parsed entities
 
       Expected string format:
        device fs_type disk_size used_size available_size capacity_used_percents mount_point
 
-    :type line str
+    :type lines list[str]
+    :rtype collections.Iterable
     """
+    titles = ["device", "type", "size", "used", "available", "percent", "mountpoint"]
 
-    line_split = line.split()
-    if len(line_split) != 7:
-      return None
+    for line in lines:
+      line_split = line.split()
+      if len(line_split) != 7:
+        continue
 
-    titles = ["device", "type", "size", "used", "available", "percent", "mountpoint"]
-    return dict(zip(titles, line_split))
+      yield dict(zip(titles, line_split))
 
-  @classmethod
-  def _get_mount_check_timeout(cls, config=None):
+  def _get_mount_check_timeout(self):
     """Return timeout for df call command"""
-    if config and config.has_option(AmbariConfig.AMBARI_PROPERTIES_CATEGORY, Hardware.CHECK_REMOTE_MOUNTS_TIMEOUT_KEY) \
-      and config.get(AmbariConfig.AMBARI_PROPERTIES_CATEGORY, Hardware.CHECK_REMOTE_MOUNTS_TIMEOUT_KEY) != "0":
+    if self.config and self.config.has_option(AmbariConfig.AMBARI_PROPERTIES_CATEGORY, Hardware.CHECK_REMOTE_MOUNTS_TIMEOUT_KEY) \
+      and self.config.get(AmbariConfig.AMBARI_PROPERTIES_CATEGORY, Hardware.CHECK_REMOTE_MOUNTS_TIMEOUT_KEY) != "0":
 
-      return config.get(AmbariConfig.AMBARI_PROPERTIES_CATEGORY, Hardware.CHECK_REMOTE_MOUNTS_TIMEOUT_KEY)
+      return self.config.get(AmbariConfig.AMBARI_PROPERTIES_CATEGORY, Hardware.CHECK_REMOTE_MOUNTS_TIMEOUT_KEY)
 
     return Hardware.CHECK_REMOTE_MOUNTS_TIMEOUT_DEFAULT
 
-  @classmethod
-  def _check_remote_mounts(cls, config=None):
+  def _check_remote_mounts(self):
     """Verify if remote mount allowed to be processed or not"""
-    if config and config.has_option(AmbariConfig.AMBARI_PROPERTIES_CATEGORY, Hardware.CHECK_REMOTE_MOUNTS_KEY) and \
-       config.get(AmbariConfig.AMBARI_PROPERTIES_CATEGORY, Hardware.CHECK_REMOTE_MOUNTS_KEY).lower() == "false":
+    if self.config and self.config.has_option(AmbariConfig.AMBARI_PROPERTIES_CATEGORY, Hardware.CHECK_REMOTE_MOUNTS_KEY) and \
+      self.config.get(AmbariConfig.AMBARI_PROPERTIES_CATEGORY, Hardware.CHECK_REMOTE_MOUNTS_KEY).lower() == "false":
 
       return False
 
     return True
 
-  @classmethod
-  def _is_mount_blacklisted(cls, blacklist, mount_point):
+  def _is_mount_blacklisted(self, blacklist, mount_point):
     """
     Verify if particular mount point is in the black list.
 
@@ -111,49 +128,44 @@ class Hardware:
     if not blacklist or not mount_point:
       return False
 
-    mount_point_elements = mount_point.split(cls.LINUX_PATH_SEP)
+    # in this way we excluding possibility
+    mount_point_elements = mount_point.split(self.LINUX_PATH_SEP)
 
     for el in blacklist:
-      el_list = el.split(cls.LINUX_PATH_SEP)
+      el_list = el.split(self.LINUX_PATH_SEP)
       # making patch elements comparision
       if el_list == mount_point_elements[:len(el_list)]:
         return True
 
     return False
 
-
-  @classmethod
   @OsFamilyFuncImpl(OsFamilyImpl.DEFAULT)
-  def osdisks(cls, config=None):
+  def osdisks(self):
     """ Run df to find out the disks on the host. Only works on linux
     platforms. Note that this parser ignores any filesystems with spaces
     and any mounts with spaces. """
-    timeout = cls._get_mount_check_timeout(config)
+    timeout = self._get_mount_check_timeout()
     command = ["timeout", timeout, "df", "-kPT"]
     blacklisted_mount_points = []
 
-    if config:
-      ignore_mount_value = config.get("agent", "ignore_mount_points", default="")
-      blacklisted_mount_points = [item.strip() for item in ignore_mount_value.split(",")]
+    if self.config:
+      ignore_mount_value = self.config.get("agent", "ignore_mount_points", default="")
+      blacklisted_mount_points = [item.strip() for item in ignore_mount_value.split(",") if len(item.strip()) != 0]
 
-    if not cls._check_remote_mounts(config):
+    if not self._check_remote_mounts():
       command.append("-l")
 
     try:
-      code, out, err = shell.call(command, stdout = subprocess.PIPE, stderr = subprocess.PIPE, timeout = int(timeout), quiet = True)
+      code, out, err = shell.call(command, stdout=subprocess.PIPE, stderr=subprocess.PIPE, timeout=int(timeout), quiet=True)
       dfdata = out
     except Exception as ex:
       logger.warn("Checking disk usage failed: " + str(ex))
       dfdata = ''
 
-    mounts = [cls._parse_df_line(line) for line in dfdata.splitlines() if line]
     result_mounts = []
     ignored_mounts = []
 
-    for mount in mounts:
-      if not mount:
-        continue
-
+    for mount in self._parse_df(dfdata.splitlines()):
       """
       We need to filter mounts by several parameters:
        - mounted device is not in the ignored list
@@ -161,11 +173,11 @@ class Hardware:
        - it is not file-mount (docker environment)
        - mount path or a part of mount path is not in the blacklist
       """
-      if mount["device"] not in cls.IGNORE_DEVICES and\
-         mount["mountpoint"].split("/")[0] not in cls.IGNORE_ROOT_MOUNTS and\
-         cls._chk_writable_mount(mount['mountpoint']) and\
+      if mount["device"] not in self.IGNORE_DEVICES and\
+         mount["mountpoint"].split("/")[0] not in self.IGNORE_ROOT_MOUNTS and\
+         self._chk_writable_mount(mount['mountpoint']) and\
          not path_isfile(mount["mountpoint"]) and\
-         not cls._is_mount_blacklisted(blacklisted_mount_points, mount["mountpoint"]):
+         not self._is_mount_blacklisted(blacklisted_mount_points, mount["mountpoint"]):
 
         result_mounts.append(mount)
       else:
@@ -177,8 +189,7 @@ class Hardware:
 
     return result_mounts
 
-  @classmethod
-  def _chk_writable_mount(cls, mount_point):
+  def _chk_writable_mount(self, mount_point):
     if os.geteuid() == 0:
       return os.access(mount_point, os.W_OK)
     else:
@@ -196,9 +207,8 @@ class Hardware:
         logger.exception("Exception happened while checking mount {0}".format(mount_point))
         return False
     
-  @classmethod
   @OsFamilyFuncImpl(OSConst.WINSRV_FAMILY)
-  def osdisks(cls, config=None):
+  def osdisks(self):
     mounts = []
     runner = shellRunner()
     command_result = runner.runPowershell(script_block=Hardware.WINDOWS_GET_DRIVES_CMD)
@@ -216,16 +226,28 @@ class Hardware:
 
     return mounts
 
-  def get(self):
-    return self.hardware
+  def get(self, invalidate_cache=False):
+    """
+    Getting cached hardware information
+
+    :param invalidate_cache resets hardware metrics cache
+    :type invalidate_cache bool
+    """
+    if invalidate_cache:
+      self._hardware = None
+
+    if not self._hardware:
+      self._cache_hardware_info()
+
+    return self._hardware
 
 
 def main():
   from resource_management.core.logger import Logger
   Logger.initialize_logger()
 
-  config = None
-  print Hardware(config).get()
+  print Hardware().get()
+
 
 if __name__ == '__main__':
   main()

+ 3 - 5
ambari-agent/src/main/python/ambari_agent/Heartbeat.py

@@ -75,14 +75,11 @@ class Heartbeat:
     if int(id) == 0:
       componentsMapped = False
 
-
-
     logger.debug("Building Heartbeat: {responseId = %s, timestamp = %s, "
                 "commandsInProgress = %s, componentsMapped = %s,"
                 "recoveryTimestamp = %s}",
         str(id), str(timestamp), repr(commandsInProgress), repr(componentsMapped), str(recovery_timestamp))
 
-
     logger.debug("Heartbeat: %s", pformat(heartbeat))
 
     hostInfo = HostInfo(self.config)
@@ -93,10 +90,9 @@ class Heartbeat:
       # this must be the last step before returning heartbeat
       hostInfo.register(nodeInfo, componentsMapped, commandsInProgress)
       heartbeat['agentEnv'] = nodeInfo
-      mounts = Hardware.osdisks(self.config)
+      mounts = Hardware(config=self.config, cache_info=False).osdisks()
       heartbeat['mounts'] = mounts
 
-
       logger.debug("agentEnv: %s", str(nodeInfo))
       logger.debug("mounts: %s", str(mounts))
 
@@ -105,6 +101,7 @@ class Heartbeat:
     
     return heartbeat
 
+
 def main(argv=None):
   from ambari_agent.ActionQueue import ActionQueue
   from ambari_agent.AmbariConfig import AmbariConfig
@@ -122,5 +119,6 @@ def main(argv=None):
   heartbeat = Heartbeat(actionQueue)
   print json.dumps(heartbeat.build('3',3))
 
+
 if __name__ == '__main__':
   main()

+ 42 - 41
ambari-agent/src/main/python/ambari_agent/HostInfo.py

@@ -57,6 +57,9 @@ class HostInfo(object):
     self.config = config
     self.reportFileHandler = HostCheckReportFileHandler(config)
 
+  def register(self, dict_obj, componentsMapped=True, commandsInProgress=True):
+    raise NotImplementedError()
+
   def dirType(self, path):
     if not os.path.exists(path):
       return 'not_exist'
@@ -245,21 +248,20 @@ class HostInfoLinux(HostInfo):
         cmd = cmd.replace('\0', ' ')
         if not 'AmbariServer' in cmd:
           if 'java' in cmd:
-            dict = {}
-            dict['pid'] = int(pid)
-            dict['hadoop'] = False
+            metrics = {}
+            metrics['pid'] = int(pid)
+            metrics['hadoop'] = False
             for filter in self.PROC_FILTER:
               if filter in cmd:
-                dict['hadoop'] = True
-            dict['command'] = unicode(cmd.strip(), errors='ignore')
+                metrics['hadoop'] = True
+            metrics['command'] = unicode(cmd.strip(), errors='ignore')
             for line in open(os.path.join('/proc', pid, 'status')):
               if line.startswith('Uid:'):
                 uid = int(line.split()[1])
-                dict['user'] = pwd.getpwuid(uid).pw_name
-            list.append(dict)
+                metrics['user'] = pwd.getpwuid(uid).pw_name
+            list.append(metrics)
     except:
       logger.exception("Checking java processes failed")
-    pass
 
   def getTransparentHugePage(self):
     thp_regex = "\[(.+)\]"
@@ -312,54 +314,54 @@ class HostInfoLinux(HostInfo):
       logger.exception('Unable to get information about JCE')
       return None
 
-  def register(self, dict, componentsMapped=True, commandsInProgress=True):
+  def register(self, metrics, componentsMapped=True, commandsInProgress=True):
     """ Return various details about the host
     componentsMapped: indicates if any components are mapped to this host
     commandsInProgress: indicates if any commands are in progress
     """
 
-    dict['hostHealth'] = {}
+    metrics['hostHealth'] = {}
 
     java = []
     self.javaProcs(java)
-    dict['hostHealth']['activeJavaProcs'] = java
+    metrics['hostHealth']['activeJavaProcs'] = java
 
     liveSvcs = []
     self.checkLiveServices(self.DEFAULT_LIVE_SERVICES, liveSvcs)
-    dict['hostHealth']['liveServices'] = liveSvcs
+    metrics['hostHealth']['liveServices'] = liveSvcs
 
-    dict['umask'] = str(self.getUMask())
+    metrics['umask'] = str(self.getUMask())
 
-    dict['transparentHugePage'] = self.getTransparentHugePage()
-    dict['firewallRunning'] = self.checkFirewall()
-    dict['firewallName'] = self.getFirewallName()
-    dict['reverseLookup'] = self.checkReverseLookup()
-    dict['hasUnlimitedJcePolicy'] = self.checkUnlimitedJce()
+    metrics['transparentHugePage'] = self.getTransparentHugePage()
+    metrics['firewallRunning'] = self.checkFirewall()
+    metrics['firewallName'] = self.getFirewallName()
+    metrics['reverseLookup'] = self.checkReverseLookup()
+    metrics['hasUnlimitedJcePolicy'] = self.checkUnlimitedJce()
     # If commands are in progress or components are already mapped to this host
     # Then do not perform certain expensive host checks
     if componentsMapped or commandsInProgress:
-      dict['alternatives'] = []
-      dict['stackFoldersAndFiles'] = []
-      dict['existingUsers'] = []
+      metrics['alternatives'] = []
+      metrics['stackFoldersAndFiles'] = []
+      metrics['existingUsers'] = []
 
     else:
       etcs = []
       self.etcAlternativesConf(self.DEFAULT_PROJECT_NAMES, etcs)
-      dict['alternatives'] = etcs
+      metrics['alternatives'] = etcs
 
       existingUsers = []
       self.checkUsers(self.DEFAULT_USERS, existingUsers)
-      dict['existingUsers'] = existingUsers
+      metrics['existingUsers'] = existingUsers
 
       dirs = []
       self.checkFolders(self.DEFAULT_BASEDIRS, self.DEFAULT_PROJECT_NAMES, self.EXACT_DIRECTORIES, existingUsers, dirs)
-      dict['stackFoldersAndFiles'] = dirs
+      metrics['stackFoldersAndFiles'] = dirs
 
-      self.reportFileHandler.writeHostCheckFile(dict)
+      self.reportFileHandler.writeHostCheckFile(metrics)
       pass
 
     # The time stamp must be recorded at the end
-    dict['hostHealth']['agentTimeStampAtReporting'] = int(time.time() * 1000)
+    metrics['hostHealth']['agentTimeStampAtReporting'] = int(time.time() * 1000)
 
     pass
 
@@ -434,43 +436,42 @@ class HostInfoWindows(HostInfo):
     code, out, err = run_powershell_script(self.SERVICE_STATUS_CMD.format(serivce_name))
     return out, err, code
 
-  def register(self, dict, componentsMapped=True, commandsInProgress=True):
+  def register(self, metrics, componentsMapped=True, commandsInProgress=True):
     """ Return various details about the host
     componentsMapped: indicates if any components are mapped to this host
     commandsInProgress: indicates if any commands are in progress
     """
-    dict['hostHealth'] = {}
+    metrics['hostHealth'] = {}
 
     java = []
     self.javaProcs(java)
-    dict['hostHealth']['activeJavaProcs'] = java
+    metrics['hostHealth']['activeJavaProcs'] = java
 
     liveSvcs = []
     self.checkLiveServices(self.DEFAULT_LIVE_SERVICES, liveSvcs)
-    dict['hostHealth']['liveServices'] = liveSvcs
+    metrics['hostHealth']['liveServices'] = liveSvcs
 
-    dict['umask'] = str(self.getUMask())
+    metrics['umask'] = str(self.getUMask())
 
-    dict['firewallRunning'] = self.checkFirewall()
-    dict['firewallName'] = self.getFirewallName()
-    dict['reverseLookup'] = self.checkReverseLookup()
+    metrics['firewallRunning'] = self.checkFirewall()
+    metrics['firewallName'] = self.getFirewallName()
+    metrics['reverseLookup'] = self.checkReverseLookup()
     # If commands are in progress or components are already mapped to this host
     # Then do not perform certain expensive host checks
     if componentsMapped or commandsInProgress:
-      dict['alternatives'] = []
-      dict['stackFoldersAndFiles'] = []
-      dict['existingUsers'] = []
+      metrics['alternatives'] = []
+      metrics['stackFoldersAndFiles'] = []
+      metrics['existingUsers'] = []
     else:
       existingUsers = []
       self.checkUsers(self.DEFAULT_USERS, existingUsers)
-      dict['existingUsers'] = existingUsers
+      metrics['existingUsers'] = existingUsers
       # TODO check HDP stack and folders here
-      self.reportFileHandler.writeHostCheckFile(dict)
+      self.reportFileHandler.writeHostCheckFile(metrics)
       pass
 
     # The time stamp must be recorded at the end
-    dict['hostHealth']['agentTimeStampAtReporting'] = int(time.time() * 1000)
-
+    metrics['hostHealth']['agentTimeStampAtReporting'] = int(time.time() * 1000)
 
 
 def main(argv=None):

+ 0 - 71
ambari-agent/src/main/python/ambari_agent/ProcessHelper.py

@@ -1,71 +0,0 @@
-#!/usr/bin/env python
-
-'''
-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.
-'''
-
-import os
-import logging
-import traceback
-import sys
-from ambari_commons.shell import getTempFiles
-
-logger = logging.getLogger()
-
-if 'AMBARI_PID_DIR' in os.environ:
-    piddir = os.environ['AMBARI_PID_DIR']
-else:
-    piddir = "/var/run/ambari-agent"
-
-pidfile = os.path.join(piddir, "ambari-agent.pid")
-
-
-def _clean():
-  logger.info("Removing pid file")
-  try:
-    os.unlink(pidfile)
-  except Exception as ex:
-    traceback.print_exc()
-    logger.warn("Unable to remove pid file: %s", ex)
-
-  logger.info("Removing temp files")
-  for f in getTempFiles():
-    if os.path.exists(f):
-      try:
-        os.unlink(f)
-      except Exception as ex:
-        traceback.print_exc()
-        logger.warn("Unable to remove: %s, %s", f, ex)
-
-
-def stopAgent():
-  _clean()
-  sys.exit(0)
-
-
-def restartAgent():
-  _clean()
-
-  executable = sys.executable
-  args = sys.argv[:]
-  args.insert(0, executable)
-
-  logger.info("Restarting self: %s %s", executable, args)
-
-  os.execvp(executable, args)
-
-

Algunos archivos no se mostraron porque demasiados archivos cambiaron en este cambio