hintparser.go 61 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330
  1. // Code generated by goyacc DO NOT EDIT.
  2. // Copyright 2020 PingCAP, Inc.
  3. //
  4. // Licensed under the Apache License, Version 2.0 (the "License");
  5. // you may not use this file except in compliance with the License.
  6. // You may obtain a copy of the License at
  7. //
  8. // http://www.apache.org/licenses/LICENSE-2.0
  9. //
  10. // Unless required by applicable law or agreed to in writing, software
  11. // distributed under the License is distributed on an "AS IS" BASIS,
  12. // See the License for the specific language governing permissions and
  13. // limitations under the License.
  14. package parser
  15. import __yyfmt__ "fmt"
  16. import (
  17. "math"
  18. "strconv"
  19. "github.com/pingcap/parser/ast"
  20. "github.com/pingcap/parser/model"
  21. )
  22. type yyhintSymType struct {
  23. yys int
  24. offset int
  25. ident string
  26. number uint64
  27. hint *ast.TableOptimizerHint
  28. hints []*ast.TableOptimizerHint
  29. table ast.HintTable
  30. modelIdents []model.CIStr
  31. }
  32. type yyhintXError struct {
  33. state, xsym int
  34. }
  35. const (
  36. yyhintDefault = 57415
  37. yyhintEOFCode = 57344
  38. yyhintErrCode = 57345
  39. hintAggToCop = 57376
  40. hintBCJoin = 57389
  41. hintBCJoinPreferLocal = 57390
  42. hintBKA = 57354
  43. hintBNL = 57356
  44. hintDupsWeedOut = 57411
  45. hintFalse = 57407
  46. hintFirstMatch = 57412
  47. hintForceIndex = 57401
  48. hintGB = 57410
  49. hintHashAgg = 57378
  50. hintHashJoin = 57358
  51. hintIdentifier = 57347
  52. hintIgnoreIndex = 57379
  53. hintIgnorePlanCache = 57377
  54. hintIndexMerge = 57362
  55. hintInlHashJoin = 57380
  56. hintInlJoin = 57381
  57. hintInlMergeJoin = 57382
  58. hintIntLit = 57346
  59. hintJoinFixedOrder = 57350
  60. hintJoinOrder = 57351
  61. hintJoinPrefix = 57352
  62. hintJoinSuffix = 57353
  63. hintLimitToCop = 57400
  64. hintLooseScan = 57413
  65. hintMB = 57409
  66. hintMRR = 57364
  67. hintMaterialization = 57414
  68. hintMaxExecutionTime = 57372
  69. hintMemoryQuota = 57383
  70. hintMerge = 57360
  71. hintNoBKA = 57355
  72. hintNoBNL = 57357
  73. hintNoHashJoin = 57359
  74. hintNoICP = 57366
  75. hintNoIndexMerge = 57363
  76. hintNoMRR = 57365
  77. hintNoMerge = 57361
  78. hintNoRangeOptimization = 57367
  79. hintNoSemijoin = 57371
  80. hintNoSkipScan = 57369
  81. hintNoSwapJoinInputs = 57384
  82. hintNthPlan = 57399
  83. hintOLAP = 57402
  84. hintOLTP = 57403
  85. hintPartition = 57404
  86. hintQBName = 57375
  87. hintQueryType = 57385
  88. hintReadConsistentReplica = 57386
  89. hintReadFromStorage = 57387
  90. hintResourceGroup = 57374
  91. hintSMJoin = 57388
  92. hintSemijoin = 57370
  93. hintSetVar = 57373
  94. hintSingleAtIdentifier = 57348
  95. hintSkipScan = 57368
  96. hintStreamAgg = 57391
  97. hintStringLit = 57349
  98. hintSwapJoinInputs = 57392
  99. hintTiFlash = 57406
  100. hintTiKV = 57405
  101. hintTimeRange = 57397
  102. hintTrue = 57408
  103. hintUseCascades = 57398
  104. hintUseIndex = 57394
  105. hintUseIndexMerge = 57393
  106. hintUsePlanCache = 57395
  107. hintUseToja = 57396
  108. yyhintMaxDepth = 200
  109. yyhintTabOfs = -172
  110. )
  111. var (
  112. yyhintXLAT = map[int]int{
  113. 41: 0, // ')' (130x)
  114. 57376: 1, // hintAggToCop (122x)
  115. 57389: 2, // hintBCJoin (122x)
  116. 57390: 3, // hintBCJoinPreferLocal (122x)
  117. 57354: 4, // hintBKA (122x)
  118. 57356: 5, // hintBNL (122x)
  119. 57401: 6, // hintForceIndex (122x)
  120. 57378: 7, // hintHashAgg (122x)
  121. 57358: 8, // hintHashJoin (122x)
  122. 57379: 9, // hintIgnoreIndex (122x)
  123. 57377: 10, // hintIgnorePlanCache (122x)
  124. 57362: 11, // hintIndexMerge (122x)
  125. 57380: 12, // hintInlHashJoin (122x)
  126. 57381: 13, // hintInlJoin (122x)
  127. 57382: 14, // hintInlMergeJoin (122x)
  128. 57350: 15, // hintJoinFixedOrder (122x)
  129. 57351: 16, // hintJoinOrder (122x)
  130. 57352: 17, // hintJoinPrefix (122x)
  131. 57353: 18, // hintJoinSuffix (122x)
  132. 57400: 19, // hintLimitToCop (122x)
  133. 57372: 20, // hintMaxExecutionTime (122x)
  134. 57383: 21, // hintMemoryQuota (122x)
  135. 57360: 22, // hintMerge (122x)
  136. 57364: 23, // hintMRR (122x)
  137. 57355: 24, // hintNoBKA (122x)
  138. 57357: 25, // hintNoBNL (122x)
  139. 57359: 26, // hintNoHashJoin (122x)
  140. 57366: 27, // hintNoICP (122x)
  141. 57363: 28, // hintNoIndexMerge (122x)
  142. 57361: 29, // hintNoMerge (122x)
  143. 57365: 30, // hintNoMRR (122x)
  144. 57367: 31, // hintNoRangeOptimization (122x)
  145. 57371: 32, // hintNoSemijoin (122x)
  146. 57369: 33, // hintNoSkipScan (122x)
  147. 57384: 34, // hintNoSwapJoinInputs (122x)
  148. 57399: 35, // hintNthPlan (122x)
  149. 57375: 36, // hintQBName (122x)
  150. 57385: 37, // hintQueryType (122x)
  151. 57386: 38, // hintReadConsistentReplica (122x)
  152. 57387: 39, // hintReadFromStorage (122x)
  153. 57374: 40, // hintResourceGroup (122x)
  154. 57370: 41, // hintSemijoin (122x)
  155. 57373: 42, // hintSetVar (122x)
  156. 57368: 43, // hintSkipScan (122x)
  157. 57388: 44, // hintSMJoin (122x)
  158. 57391: 45, // hintStreamAgg (122x)
  159. 57392: 46, // hintSwapJoinInputs (122x)
  160. 57397: 47, // hintTimeRange (122x)
  161. 57398: 48, // hintUseCascades (122x)
  162. 57394: 49, // hintUseIndex (122x)
  163. 57393: 50, // hintUseIndexMerge (122x)
  164. 57395: 51, // hintUsePlanCache (122x)
  165. 57396: 52, // hintUseToja (122x)
  166. 44: 53, // ',' (120x)
  167. 57411: 54, // hintDupsWeedOut (100x)
  168. 57412: 55, // hintFirstMatch (100x)
  169. 57413: 56, // hintLooseScan (100x)
  170. 57414: 57, // hintMaterialization (100x)
  171. 57406: 58, // hintTiFlash (100x)
  172. 57405: 59, // hintTiKV (100x)
  173. 57407: 60, // hintFalse (99x)
  174. 57402: 61, // hintOLAP (99x)
  175. 57403: 62, // hintOLTP (99x)
  176. 57408: 63, // hintTrue (99x)
  177. 57410: 64, // hintGB (98x)
  178. 57409: 65, // hintMB (98x)
  179. 57347: 66, // hintIdentifier (97x)
  180. 57348: 67, // hintSingleAtIdentifier (82x)
  181. 93: 68, // ']' (76x)
  182. 57404: 69, // hintPartition (70x)
  183. 46: 70, // '.' (66x)
  184. 61: 71, // '=' (66x)
  185. 40: 72, // '(' (61x)
  186. 57344: 73, // $end (24x)
  187. 57435: 74, // QueryBlockOpt (17x)
  188. 57427: 75, // Identifier (13x)
  189. 57346: 76, // hintIntLit (8x)
  190. 57349: 77, // hintStringLit (5x)
  191. 57417: 78, // CommaOpt (4x)
  192. 57423: 79, // HintTable (4x)
  193. 57424: 80, // HintTableList (4x)
  194. 91: 81, // '[' (3x)
  195. 57416: 82, // BooleanHintName (2x)
  196. 57418: 83, // HintIndexList (2x)
  197. 57420: 84, // HintStorageType (2x)
  198. 57421: 85, // HintStorageTypeAndTable (2x)
  199. 57425: 86, // HintTableListOpt (2x)
  200. 57430: 87, // JoinOrderOptimizerHintName (2x)
  201. 57431: 88, // NullaryHintName (2x)
  202. 57434: 89, // PartitionListOpt (2x)
  203. 57437: 90, // StorageOptimizerHintOpt (2x)
  204. 57438: 91, // SubqueryOptimizerHintName (2x)
  205. 57441: 92, // SubqueryStrategy (2x)
  206. 57442: 93, // SupportedIndexLevelOptimizerHintName (2x)
  207. 57443: 94, // SupportedTableLevelOptimizerHintName (2x)
  208. 57444: 95, // TableOptimizerHintOpt (2x)
  209. 57446: 96, // UnsupportedIndexLevelOptimizerHintName (2x)
  210. 57447: 97, // UnsupportedTableLevelOptimizerHintName (2x)
  211. 57419: 98, // HintQueryType (1x)
  212. 57422: 99, // HintStorageTypeAndTableList (1x)
  213. 57426: 100, // HintTrueOrFalse (1x)
  214. 57428: 101, // IndexNameList (1x)
  215. 57429: 102, // IndexNameListOpt (1x)
  216. 57432: 103, // OptimizerHintList (1x)
  217. 57433: 104, // PartitionList (1x)
  218. 57436: 105, // Start (1x)
  219. 57439: 106, // SubqueryStrategies (1x)
  220. 57440: 107, // SubqueryStrategiesOpt (1x)
  221. 57445: 108, // UnitOfBytes (1x)
  222. 57448: 109, // Value (1x)
  223. 57415: 110, // $default (0x)
  224. 57345: 111, // error (0x)
  225. }
  226. yyhintSymNames = []string{
  227. "')'",
  228. "hintAggToCop",
  229. "hintBCJoin",
  230. "hintBCJoinPreferLocal",
  231. "hintBKA",
  232. "hintBNL",
  233. "hintForceIndex",
  234. "hintHashAgg",
  235. "hintHashJoin",
  236. "hintIgnoreIndex",
  237. "hintIgnorePlanCache",
  238. "hintIndexMerge",
  239. "hintInlHashJoin",
  240. "hintInlJoin",
  241. "hintInlMergeJoin",
  242. "hintJoinFixedOrder",
  243. "hintJoinOrder",
  244. "hintJoinPrefix",
  245. "hintJoinSuffix",
  246. "hintLimitToCop",
  247. "hintMaxExecutionTime",
  248. "hintMemoryQuota",
  249. "hintMerge",
  250. "hintMRR",
  251. "hintNoBKA",
  252. "hintNoBNL",
  253. "hintNoHashJoin",
  254. "hintNoICP",
  255. "hintNoIndexMerge",
  256. "hintNoMerge",
  257. "hintNoMRR",
  258. "hintNoRangeOptimization",
  259. "hintNoSemijoin",
  260. "hintNoSkipScan",
  261. "hintNoSwapJoinInputs",
  262. "hintNthPlan",
  263. "hintQBName",
  264. "hintQueryType",
  265. "hintReadConsistentReplica",
  266. "hintReadFromStorage",
  267. "hintResourceGroup",
  268. "hintSemijoin",
  269. "hintSetVar",
  270. "hintSkipScan",
  271. "hintSMJoin",
  272. "hintStreamAgg",
  273. "hintSwapJoinInputs",
  274. "hintTimeRange",
  275. "hintUseCascades",
  276. "hintUseIndex",
  277. "hintUseIndexMerge",
  278. "hintUsePlanCache",
  279. "hintUseToja",
  280. "','",
  281. "hintDupsWeedOut",
  282. "hintFirstMatch",
  283. "hintLooseScan",
  284. "hintMaterialization",
  285. "hintTiFlash",
  286. "hintTiKV",
  287. "hintFalse",
  288. "hintOLAP",
  289. "hintOLTP",
  290. "hintTrue",
  291. "hintGB",
  292. "hintMB",
  293. "hintIdentifier",
  294. "hintSingleAtIdentifier",
  295. "']'",
  296. "hintPartition",
  297. "'.'",
  298. "'='",
  299. "'('",
  300. "$end",
  301. "QueryBlockOpt",
  302. "Identifier",
  303. "hintIntLit",
  304. "hintStringLit",
  305. "CommaOpt",
  306. "HintTable",
  307. "HintTableList",
  308. "'['",
  309. "BooleanHintName",
  310. "HintIndexList",
  311. "HintStorageType",
  312. "HintStorageTypeAndTable",
  313. "HintTableListOpt",
  314. "JoinOrderOptimizerHintName",
  315. "NullaryHintName",
  316. "PartitionListOpt",
  317. "StorageOptimizerHintOpt",
  318. "SubqueryOptimizerHintName",
  319. "SubqueryStrategy",
  320. "SupportedIndexLevelOptimizerHintName",
  321. "SupportedTableLevelOptimizerHintName",
  322. "TableOptimizerHintOpt",
  323. "UnsupportedIndexLevelOptimizerHintName",
  324. "UnsupportedTableLevelOptimizerHintName",
  325. "HintQueryType",
  326. "HintStorageTypeAndTableList",
  327. "HintTrueOrFalse",
  328. "IndexNameList",
  329. "IndexNameListOpt",
  330. "OptimizerHintList",
  331. "PartitionList",
  332. "Start",
  333. "SubqueryStrategies",
  334. "SubqueryStrategiesOpt",
  335. "UnitOfBytes",
  336. "Value",
  337. "$default",
  338. "error",
  339. }
  340. yyhintReductions = []struct{ xsym, components int }{
  341. {0, 1},
  342. {105, 1},
  343. {103, 1},
  344. {103, 3},
  345. {103, 1},
  346. {103, 3},
  347. {95, 4},
  348. {95, 4},
  349. {95, 4},
  350. {95, 4},
  351. {95, 4},
  352. {95, 4},
  353. {95, 5},
  354. {95, 5},
  355. {95, 5},
  356. {95, 6},
  357. {95, 4},
  358. {95, 4},
  359. {95, 6},
  360. {95, 6},
  361. {95, 5},
  362. {95, 4},
  363. {95, 5},
  364. {90, 5},
  365. {99, 1},
  366. {99, 3},
  367. {85, 4},
  368. {74, 0},
  369. {74, 1},
  370. {78, 0},
  371. {78, 1},
  372. {89, 0},
  373. {89, 4},
  374. {104, 1},
  375. {104, 3},
  376. {86, 1},
  377. {86, 1},
  378. {80, 2},
  379. {80, 3},
  380. {79, 3},
  381. {79, 5},
  382. {83, 4},
  383. {102, 0},
  384. {102, 1},
  385. {101, 1},
  386. {101, 3},
  387. {107, 0},
  388. {107, 1},
  389. {106, 1},
  390. {106, 3},
  391. {109, 1},
  392. {109, 1},
  393. {109, 1},
  394. {108, 1},
  395. {108, 1},
  396. {100, 1},
  397. {100, 1},
  398. {87, 1},
  399. {87, 1},
  400. {87, 1},
  401. {97, 1},
  402. {97, 1},
  403. {97, 1},
  404. {97, 1},
  405. {97, 1},
  406. {97, 1},
  407. {97, 1},
  408. {94, 1},
  409. {94, 1},
  410. {94, 1},
  411. {94, 1},
  412. {94, 1},
  413. {94, 1},
  414. {94, 1},
  415. {94, 1},
  416. {94, 1},
  417. {96, 1},
  418. {96, 1},
  419. {96, 1},
  420. {96, 1},
  421. {96, 1},
  422. {96, 1},
  423. {96, 1},
  424. {93, 1},
  425. {93, 1},
  426. {93, 1},
  427. {93, 1},
  428. {91, 1},
  429. {91, 1},
  430. {92, 1},
  431. {92, 1},
  432. {92, 1},
  433. {92, 1},
  434. {82, 1},
  435. {82, 1},
  436. {88, 1},
  437. {88, 1},
  438. {88, 1},
  439. {88, 1},
  440. {88, 1},
  441. {88, 1},
  442. {88, 1},
  443. {88, 1},
  444. {98, 1},
  445. {98, 1},
  446. {84, 1},
  447. {84, 1},
  448. {75, 1},
  449. {75, 1},
  450. {75, 1},
  451. {75, 1},
  452. {75, 1},
  453. {75, 1},
  454. {75, 1},
  455. {75, 1},
  456. {75, 1},
  457. {75, 1},
  458. {75, 1},
  459. {75, 1},
  460. {75, 1},
  461. {75, 1},
  462. {75, 1},
  463. {75, 1},
  464. {75, 1},
  465. {75, 1},
  466. {75, 1},
  467. {75, 1},
  468. {75, 1},
  469. {75, 1},
  470. {75, 1},
  471. {75, 1},
  472. {75, 1},
  473. {75, 1},
  474. {75, 1},
  475. {75, 1},
  476. {75, 1},
  477. {75, 1},
  478. {75, 1},
  479. {75, 1},
  480. {75, 1},
  481. {75, 1},
  482. {75, 1},
  483. {75, 1},
  484. {75, 1},
  485. {75, 1},
  486. {75, 1},
  487. {75, 1},
  488. {75, 1},
  489. {75, 1},
  490. {75, 1},
  491. {75, 1},
  492. {75, 1},
  493. {75, 1},
  494. {75, 1},
  495. {75, 1},
  496. {75, 1},
  497. {75, 1},
  498. {75, 1},
  499. {75, 1},
  500. {75, 1},
  501. {75, 1},
  502. {75, 1},
  503. {75, 1},
  504. {75, 1},
  505. {75, 1},
  506. {75, 1},
  507. {75, 1},
  508. {75, 1},
  509. {75, 1},
  510. {75, 1},
  511. {75, 1},
  512. {75, 1},
  513. }
  514. yyhintXErrors = map[yyhintXError]string{}
  515. yyhintParseTab = [255][]uint16{
  516. // 0
  517. {1: 232, 206, 207, 198, 200, 224, 230, 213, 222, 236, 214, 209, 208, 212, 177, 195, 196, 197, 233, 184, 189, 203, 215, 199, 201, 202, 217, 234, 204, 216, 218, 226, 220, 211, 185, 188, 193, 235, 194, 187, 225, 186, 219, 205, 231, 210, 190, 228, 221, 223, 229, 227, 82: 191, 87: 178, 192, 90: 176, 183, 93: 182, 180, 175, 181, 179, 103: 174, 105: 173},
  518. {73: 172},
  519. {1: 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 324, 73: 171, 78: 424},
  520. {1: 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 170, 73: 170},
  521. {1: 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 168, 73: 168},
  522. // 5
  523. {72: 421},
  524. {72: 418},
  525. {72: 415},
  526. {72: 410},
  527. {72: 407},
  528. // 10
  529. {72: 396},
  530. {72: 384},
  531. {72: 380},
  532. {72: 376},
  533. {72: 368},
  534. // 15
  535. {72: 365},
  536. {72: 362},
  537. {72: 355},
  538. {72: 350},
  539. {72: 344},
  540. // 20
  541. {72: 341},
  542. {72: 335},
  543. {72: 237},
  544. {72: 115},
  545. {72: 114},
  546. // 25
  547. {72: 113},
  548. {72: 112},
  549. {72: 111},
  550. {72: 110},
  551. {72: 109},
  552. // 30
  553. {72: 108},
  554. {72: 107},
  555. {72: 106},
  556. {72: 105},
  557. {72: 104},
  558. // 35
  559. {72: 103},
  560. {72: 102},
  561. {72: 101},
  562. {72: 100},
  563. {72: 99},
  564. // 40
  565. {72: 98},
  566. {72: 97},
  567. {72: 96},
  568. {72: 95},
  569. {72: 94},
  570. // 45
  571. {72: 93},
  572. {72: 92},
  573. {72: 91},
  574. {72: 90},
  575. {72: 89},
  576. // 50
  577. {72: 88},
  578. {72: 87},
  579. {72: 86},
  580. {72: 85},
  581. {72: 84},
  582. // 55
  583. {72: 79},
  584. {72: 78},
  585. {72: 77},
  586. {72: 76},
  587. {72: 75},
  588. // 60
  589. {72: 74},
  590. {72: 73},
  591. {72: 72},
  592. {72: 71},
  593. {72: 70},
  594. // 65
  595. {58: 145, 145, 67: 239, 74: 238},
  596. {58: 244, 243, 84: 242, 241, 99: 240},
  597. {144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 144, 68: 144, 144, 76: 144},
  598. {332, 53: 333},
  599. {148, 53: 148},
  600. // 70
  601. {81: 245},
  602. {81: 67},
  603. {81: 66},
  604. {1: 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 54: 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 239, 74: 247, 80: 246},
  605. {53: 330, 68: 329},
  606. // 75
  607. {1: 277, 291, 292, 255, 257, 302, 280, 259, 281, 279, 263, 282, 283, 284, 251, 252, 253, 254, 278, 273, 285, 261, 265, 256, 258, 260, 267, 264, 262, 266, 268, 272, 270, 286, 301, 276, 287, 288, 289, 275, 271, 274, 269, 290, 293, 294, 299, 300, 296, 295, 297, 298, 54: 311, 312, 313, 314, 306, 305, 307, 303, 304, 308, 310, 309, 250, 75: 249, 79: 248},
  608. {135, 53: 135, 68: 135},
  609. {145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 239, 145, 145, 316, 74: 315},
  610. {65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65, 65},
  611. {64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64, 64},
  612. // 80
  613. {63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63, 63},
  614. {62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62, 62},
  615. {61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61, 61},
  616. {60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60, 60},
  617. {59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59, 59},
  618. // 85
  619. {58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58, 58},
  620. {57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57, 57},
  621. {56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56, 56},
  622. {55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55, 55},
  623. {54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54, 54},
  624. // 90
  625. {53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53, 53},
  626. {52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52, 52},
  627. {51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51, 51},
  628. {50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50, 50},
  629. {49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49, 49},
  630. // 95
  631. {48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48},
  632. {47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47, 47},
  633. {46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46, 46},
  634. {45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45, 45},
  635. {44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44, 44},
  636. // 100
  637. {43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43, 43},
  638. {42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42, 42},
  639. {41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41, 41},
  640. {40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40, 40},
  641. {39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39, 39},
  642. // 105
  643. {38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38, 38},
  644. {37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37, 37},
  645. {36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36, 36},
  646. {35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35, 35},
  647. {34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34, 34},
  648. // 110
  649. {33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33},
  650. {32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32, 32},
  651. {31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31, 31},
  652. {30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30, 30},
  653. {29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29},
  654. // 115
  655. {28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28},
  656. {27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27},
  657. {26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26},
  658. {25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25},
  659. {24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24},
  660. // 120
  661. {23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23, 23},
  662. {22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22},
  663. {21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21},
  664. {20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20},
  665. {19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19},
  666. // 125
  667. {18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18},
  668. {17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17, 17},
  669. {16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16},
  670. {15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15},
  671. {14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14},
  672. // 130
  673. {13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13},
  674. {12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12},
  675. {11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11},
  676. {10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10, 10},
  677. {9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9, 9},
  678. // 135
  679. {8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8, 8},
  680. {7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7},
  681. {6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6, 6},
  682. {5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5, 5},
  683. {4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4},
  684. // 140
  685. {3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3},
  686. {2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2},
  687. {1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1},
  688. {141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 68: 141, 319, 89: 328},
  689. {1: 277, 291, 292, 255, 257, 302, 280, 259, 281, 279, 263, 282, 283, 284, 251, 252, 253, 254, 278, 273, 285, 261, 265, 256, 258, 260, 267, 264, 262, 266, 268, 272, 270, 286, 301, 276, 287, 288, 289, 275, 271, 274, 269, 290, 293, 294, 299, 300, 296, 295, 297, 298, 54: 311, 312, 313, 314, 306, 305, 307, 303, 304, 308, 310, 309, 250, 75: 317},
  690. // 145
  691. {145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 239, 145, 145, 74: 318},
  692. {141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 141, 68: 141, 319, 89: 320},
  693. {72: 321},
  694. {132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 132, 68: 132},
  695. {1: 277, 291, 292, 255, 257, 302, 280, 259, 281, 279, 263, 282, 283, 284, 251, 252, 253, 254, 278, 273, 285, 261, 265, 256, 258, 260, 267, 264, 262, 266, 268, 272, 270, 286, 301, 276, 287, 288, 289, 275, 271, 274, 269, 290, 293, 294, 299, 300, 296, 295, 297, 298, 54: 311, 312, 313, 314, 306, 305, 307, 303, 304, 308, 310, 309, 250, 75: 323, 104: 322},
  696. // 150
  697. {325, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 324, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 78: 326},
  698. {139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139, 139},
  699. {142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 54: 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 142, 77: 142},
  700. {140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 140, 68: 140},
  701. {1: 277, 291, 292, 255, 257, 302, 280, 259, 281, 279, 263, 282, 283, 284, 251, 252, 253, 254, 278, 273, 285, 261, 265, 256, 258, 260, 267, 264, 262, 266, 268, 272, 270, 286, 301, 276, 287, 288, 289, 275, 271, 274, 269, 290, 293, 294, 299, 300, 296, 295, 297, 298, 54: 311, 312, 313, 314, 306, 305, 307, 303, 304, 308, 310, 309, 250, 75: 327},
  702. // 155
  703. {138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138, 138},
  704. {133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 133, 68: 133},
  705. {146, 53: 146},
  706. {1: 277, 291, 292, 255, 257, 302, 280, 259, 281, 279, 263, 282, 283, 284, 251, 252, 253, 254, 278, 273, 285, 261, 265, 256, 258, 260, 267, 264, 262, 266, 268, 272, 270, 286, 301, 276, 287, 288, 289, 275, 271, 274, 269, 290, 293, 294, 299, 300, 296, 295, 297, 298, 54: 311, 312, 313, 314, 306, 305, 307, 303, 304, 308, 310, 309, 250, 75: 249, 79: 331},
  707. {134, 53: 134, 68: 134},
  708. // 160
  709. {1: 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 149, 73: 149},
  710. {58: 244, 243, 84: 242, 334},
  711. {147, 53: 147},
  712. {61: 145, 145, 67: 239, 74: 336},
  713. {61: 338, 339, 98: 337},
  714. // 165
  715. {340},
  716. {69},
  717. {68},
  718. {1: 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 150, 73: 150},
  719. {145, 67: 239, 74: 342},
  720. // 170
  721. {343},
  722. {1: 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 151, 73: 151},
  723. {60: 145, 63: 145, 67: 239, 74: 345},
  724. {60: 348, 63: 347, 100: 346},
  725. {349},
  726. // 175
  727. {117},
  728. {116},
  729. {1: 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 152, 73: 152},
  730. {77: 351},
  731. {53: 324, 77: 143, 352},
  732. // 180
  733. {77: 353},
  734. {354},
  735. {1: 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 153, 73: 153},
  736. {67: 239, 74: 356, 76: 145},
  737. {76: 357},
  738. // 185
  739. {64: 360, 359, 108: 358},
  740. {361},
  741. {119},
  742. {118},
  743. {1: 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 154, 73: 154},
  744. // 190
  745. {1: 277, 291, 292, 255, 257, 302, 280, 259, 281, 279, 263, 282, 283, 284, 251, 252, 253, 254, 278, 273, 285, 261, 265, 256, 258, 260, 267, 264, 262, 266, 268, 272, 270, 286, 301, 276, 287, 288, 289, 275, 271, 274, 269, 290, 293, 294, 299, 300, 296, 295, 297, 298, 54: 311, 312, 313, 314, 306, 305, 307, 303, 304, 308, 310, 309, 250, 75: 363},
  746. {364},
  747. {1: 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 155, 73: 155},
  748. {1: 277, 291, 292, 255, 257, 302, 280, 259, 281, 279, 263, 282, 283, 284, 251, 252, 253, 254, 278, 273, 285, 261, 265, 256, 258, 260, 267, 264, 262, 266, 268, 272, 270, 286, 301, 276, 287, 288, 289, 275, 271, 274, 269, 290, 293, 294, 299, 300, 296, 295, 297, 298, 54: 311, 312, 313, 314, 306, 305, 307, 303, 304, 308, 310, 309, 250, 75: 366},
  749. {367},
  750. // 195
  751. {1: 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 156, 73: 156},
  752. {1: 277, 291, 292, 255, 257, 302, 280, 259, 281, 279, 263, 282, 283, 284, 251, 252, 253, 254, 278, 273, 285, 261, 265, 256, 258, 260, 267, 264, 262, 266, 268, 272, 270, 286, 301, 276, 287, 288, 289, 275, 271, 274, 269, 290, 293, 294, 299, 300, 296, 295, 297, 298, 54: 311, 312, 313, 314, 306, 305, 307, 303, 304, 308, 310, 309, 250, 75: 369},
  753. {71: 370},
  754. {1: 277, 291, 292, 255, 257, 302, 280, 259, 281, 279, 263, 282, 283, 284, 251, 252, 253, 254, 278, 273, 285, 261, 265, 256, 258, 260, 267, 264, 262, 266, 268, 272, 270, 286, 301, 276, 287, 288, 289, 275, 271, 274, 269, 290, 293, 294, 299, 300, 296, 295, 297, 298, 54: 311, 312, 313, 314, 306, 305, 307, 303, 304, 308, 310, 309, 250, 75: 373, 374, 372, 109: 371},
  755. {375},
  756. // 200
  757. {122},
  758. {121},
  759. {120},
  760. {1: 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 157, 73: 157},
  761. {67: 239, 74: 377, 76: 145},
  762. // 205
  763. {76: 378},
  764. {379},
  765. {1: 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 158, 73: 158},
  766. {67: 239, 74: 381, 76: 145},
  767. {76: 382},
  768. // 210
  769. {383},
  770. {1: 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 159, 73: 159},
  771. {145, 54: 145, 145, 145, 145, 67: 239, 74: 385},
  772. {126, 54: 389, 390, 391, 392, 92: 388, 106: 387, 386},
  773. {395},
  774. // 215
  775. {125, 53: 393},
  776. {124, 53: 124},
  777. {83, 53: 83},
  778. {82, 53: 82},
  779. {81, 53: 81},
  780. // 220
  781. {80, 53: 80},
  782. {54: 389, 390, 391, 392, 92: 394},
  783. {123, 53: 123},
  784. {1: 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 160, 73: 160},
  785. {1: 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 54: 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 239, 74: 398, 83: 397},
  786. // 225
  787. {406},
  788. {1: 277, 291, 292, 255, 257, 302, 280, 259, 281, 279, 263, 282, 283, 284, 251, 252, 253, 254, 278, 273, 285, 261, 265, 256, 258, 260, 267, 264, 262, 266, 268, 272, 270, 286, 301, 276, 287, 288, 289, 275, 271, 274, 269, 290, 293, 294, 299, 300, 296, 295, 297, 298, 54: 311, 312, 313, 314, 306, 305, 307, 303, 304, 308, 310, 309, 250, 75: 249, 79: 399},
  789. {143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 324, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 143, 78: 400},
  790. {130, 277, 291, 292, 255, 257, 302, 280, 259, 281, 279, 263, 282, 283, 284, 251, 252, 253, 254, 278, 273, 285, 261, 265, 256, 258, 260, 267, 264, 262, 266, 268, 272, 270, 286, 301, 276, 287, 288, 289, 275, 271, 274, 269, 290, 293, 294, 299, 300, 296, 295, 297, 298, 54: 311, 312, 313, 314, 306, 305, 307, 303, 304, 308, 310, 309, 250, 75: 403, 101: 402, 401},
  791. {131},
  792. // 230
  793. {129, 53: 404},
  794. {128, 53: 128},
  795. {1: 277, 291, 292, 255, 257, 302, 280, 259, 281, 279, 263, 282, 283, 284, 251, 252, 253, 254, 278, 273, 285, 261, 265, 256, 258, 260, 267, 264, 262, 266, 268, 272, 270, 286, 301, 276, 287, 288, 289, 275, 271, 274, 269, 290, 293, 294, 299, 300, 296, 295, 297, 298, 54: 311, 312, 313, 314, 306, 305, 307, 303, 304, 308, 310, 309, 250, 75: 405},
  796. {127, 53: 127},
  797. {1: 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 161, 73: 161},
  798. // 235
  799. {1: 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 54: 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 239, 74: 398, 83: 408},
  800. {409},
  801. {1: 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 162, 73: 162},
  802. {145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 54: 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 239, 74: 413, 80: 412, 86: 411},
  803. {414},
  804. // 240
  805. {137, 53: 330},
  806. {136, 277, 291, 292, 255, 257, 302, 280, 259, 281, 279, 263, 282, 283, 284, 251, 252, 253, 254, 278, 273, 285, 261, 265, 256, 258, 260, 267, 264, 262, 266, 268, 272, 270, 286, 301, 276, 287, 288, 289, 275, 271, 274, 269, 290, 293, 294, 299, 300, 296, 295, 297, 298, 54: 311, 312, 313, 314, 306, 305, 307, 303, 304, 308, 310, 309, 250, 75: 249, 79: 248},
  807. {1: 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 163, 73: 163},
  808. {145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 54: 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 239, 74: 413, 80: 412, 86: 416},
  809. {417},
  810. // 245
  811. {1: 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 164, 73: 164},
  812. {1: 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 54: 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 145, 239, 74: 247, 80: 419},
  813. {420, 53: 330},
  814. {1: 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 165, 73: 165},
  815. {145, 67: 239, 74: 422},
  816. // 250
  817. {423},
  818. {1: 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 166, 73: 166},
  819. {1: 232, 206, 207, 198, 200, 224, 230, 213, 222, 236, 214, 209, 208, 212, 177, 195, 196, 197, 233, 184, 189, 203, 215, 199, 201, 202, 217, 234, 204, 216, 218, 226, 220, 211, 185, 188, 193, 235, 194, 187, 225, 186, 219, 205, 231, 210, 190, 228, 221, 223, 229, 227, 82: 191, 87: 178, 192, 90: 426, 183, 93: 182, 180, 425, 181, 179},
  820. {1: 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 169, 73: 169},
  821. {1: 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 167, 73: 167},
  822. }
  823. )
  824. var yyhintDebug = 0
  825. type yyhintLexer interface {
  826. Lex(lval *yyhintSymType) int
  827. Errorf(format string, a ...interface{}) error
  828. AppendError(err error)
  829. Errors() (warns []error, errs []error)
  830. }
  831. type yyhintLexerEx interface {
  832. yyhintLexer
  833. Reduced(rule, state int, lval *yyhintSymType) bool
  834. }
  835. func yyhintSymName(c int) (s string) {
  836. x, ok := yyhintXLAT[c]
  837. if ok {
  838. return yyhintSymNames[x]
  839. }
  840. return __yyfmt__.Sprintf("%d", c)
  841. }
  842. func yyhintlex1(yylex yyhintLexer, lval *yyhintSymType) (n int) {
  843. n = yylex.Lex(lval)
  844. if n <= 0 {
  845. n = yyhintEOFCode
  846. }
  847. if yyhintDebug >= 3 {
  848. __yyfmt__.Printf("\nlex %s(%#x %d), lval: %+v\n", yyhintSymName(n), n, n, lval)
  849. }
  850. return n
  851. }
  852. func yyhintParse(yylex yyhintLexer, parser *hintParser) int {
  853. const yyError = 111
  854. yyEx, _ := yylex.(yyhintLexerEx)
  855. var yyn int
  856. parser.yylval = yyhintSymType{}
  857. yyS := parser.cache
  858. Nerrs := 0 /* number of errors */
  859. Errflag := 0 /* error recovery flag */
  860. yyerrok := func() {
  861. if yyhintDebug >= 2 {
  862. __yyfmt__.Printf("yyerrok()\n")
  863. }
  864. Errflag = 0
  865. }
  866. _ = yyerrok
  867. yystate := 0
  868. yychar := -1
  869. var yyxchar int
  870. var yyshift int
  871. yyp := -1
  872. goto yystack
  873. ret0:
  874. return 0
  875. ret1:
  876. return 1
  877. yystack:
  878. /* put a state and value onto the stack */
  879. yyp++
  880. if yyp+1 >= len(yyS) {
  881. nyys := make([]yyhintSymType, len(yyS)*2)
  882. copy(nyys, yyS)
  883. yyS = nyys
  884. parser.cache = yyS
  885. }
  886. parser.yyVAL = &yyS[yyp+1]
  887. yyS[yyp].yys = yystate
  888. yynewstate:
  889. if yychar < 0 {
  890. yychar = yyhintlex1(yylex, &parser.yylval)
  891. var ok bool
  892. if yyxchar, ok = yyhintXLAT[yychar]; !ok {
  893. yyxchar = len(yyhintSymNames) // > tab width
  894. }
  895. }
  896. if yyhintDebug >= 4 {
  897. var a []int
  898. for _, v := range yyS[:yyp+1] {
  899. a = append(a, v.yys)
  900. }
  901. __yyfmt__.Printf("state stack %v\n", a)
  902. }
  903. row := yyhintParseTab[yystate]
  904. yyn = 0
  905. if yyxchar < len(row) {
  906. if yyn = int(row[yyxchar]); yyn != 0 {
  907. yyn += yyhintTabOfs
  908. }
  909. }
  910. switch {
  911. case yyn > 0: // shift
  912. yychar = -1
  913. *parser.yyVAL = parser.yylval
  914. yystate = yyn
  915. yyshift = yyn
  916. if yyhintDebug >= 2 {
  917. __yyfmt__.Printf("shift, and goto state %d\n", yystate)
  918. }
  919. if Errflag > 0 {
  920. Errflag--
  921. }
  922. goto yystack
  923. case yyn < 0: // reduce
  924. case yystate == 1: // accept
  925. if yyhintDebug >= 2 {
  926. __yyfmt__.Println("accept")
  927. }
  928. goto ret0
  929. }
  930. if yyn == 0 {
  931. /* error ... attempt to resume parsing */
  932. switch Errflag {
  933. case 0: /* brand new error */
  934. if yyhintDebug >= 1 {
  935. __yyfmt__.Printf("no action for %s in state %d\n", yyhintSymName(yychar), yystate)
  936. }
  937. msg, ok := yyhintXErrors[yyhintXError{yystate, yyxchar}]
  938. if !ok {
  939. msg, ok = yyhintXErrors[yyhintXError{yystate, -1}]
  940. }
  941. if !ok && yyshift != 0 {
  942. msg, ok = yyhintXErrors[yyhintXError{yyshift, yyxchar}]
  943. }
  944. if !ok {
  945. msg, ok = yyhintXErrors[yyhintXError{yyshift, -1}]
  946. }
  947. if !ok || msg == "" {
  948. msg = "syntax error"
  949. }
  950. // ignore goyacc error message
  951. yylex.AppendError(yylex.Errorf(""))
  952. Nerrs++
  953. fallthrough
  954. case 1, 2: /* incompletely recovered error ... try again */
  955. Errflag = 3
  956. /* find a state where "error" is a legal shift action */
  957. for yyp >= 0 {
  958. row := yyhintParseTab[yyS[yyp].yys]
  959. if yyError < len(row) {
  960. yyn = int(row[yyError]) + yyhintTabOfs
  961. if yyn > 0 { // hit
  962. if yyhintDebug >= 2 {
  963. __yyfmt__.Printf("error recovery found error shift in state %d\n", yyS[yyp].yys)
  964. }
  965. yystate = yyn /* simulate a shift of "error" */
  966. goto yystack
  967. }
  968. }
  969. /* the current p has no shift on "error", pop stack */
  970. if yyhintDebug >= 2 {
  971. __yyfmt__.Printf("error recovery pops state %d\n", yyS[yyp].yys)
  972. }
  973. yyp--
  974. }
  975. /* there is no state on the stack with an error shift ... abort */
  976. if yyhintDebug >= 2 {
  977. __yyfmt__.Printf("error recovery failed\n")
  978. }
  979. goto ret1
  980. case 3: /* no shift yet; clobber input char */
  981. if yyhintDebug >= 2 {
  982. __yyfmt__.Printf("error recovery discards %s\n", yyhintSymName(yychar))
  983. }
  984. if yychar == yyhintEOFCode {
  985. goto ret1
  986. }
  987. yychar = -1
  988. goto yynewstate /* try again in the same state */
  989. }
  990. }
  991. r := -yyn
  992. x0 := yyhintReductions[r]
  993. x, n := x0.xsym, x0.components
  994. yypt := yyp
  995. _ = yypt // guard against "declared and not used"
  996. yyp -= n
  997. if yyp+1 >= len(yyS) {
  998. nyys := make([]yyhintSymType, len(yyS)*2)
  999. copy(nyys, yyS)
  1000. yyS = nyys
  1001. parser.cache = yyS
  1002. }
  1003. parser.yyVAL = &yyS[yyp+1]
  1004. /* consult goto table to find next state */
  1005. exState := yystate
  1006. yystate = int(yyhintParseTab[yyS[yyp].yys][x]) + yyhintTabOfs
  1007. /* reduction by production r */
  1008. if yyhintDebug >= 2 {
  1009. __yyfmt__.Printf("reduce using rule %v (%s), and goto state %d\n", r, yyhintSymNames[x], yystate)
  1010. }
  1011. switch r {
  1012. case 1:
  1013. {
  1014. parser.result = yyS[yypt-0].hints
  1015. }
  1016. case 2:
  1017. {
  1018. if yyS[yypt-0].hint != nil {
  1019. parser.yyVAL.hints = []*ast.TableOptimizerHint{yyS[yypt-0].hint}
  1020. }
  1021. }
  1022. case 3:
  1023. {
  1024. if yyS[yypt-0].hint != nil {
  1025. parser.yyVAL.hints = append(yyS[yypt-2].hints, yyS[yypt-0].hint)
  1026. } else {
  1027. parser.yyVAL.hints = yyS[yypt-2].hints
  1028. }
  1029. }
  1030. case 4:
  1031. {
  1032. parser.yyVAL.hints = yyS[yypt-0].hints
  1033. }
  1034. case 5:
  1035. {
  1036. parser.yyVAL.hints = append(yyS[yypt-2].hints, yyS[yypt-0].hints...)
  1037. }
  1038. case 6:
  1039. {
  1040. parser.warnUnsupportedHint(yyS[yypt-3].ident)
  1041. parser.yyVAL.hint = nil
  1042. }
  1043. case 7:
  1044. {
  1045. parser.warnUnsupportedHint(yyS[yypt-3].ident)
  1046. parser.yyVAL.hint = nil
  1047. }
  1048. case 8:
  1049. {
  1050. parser.warnUnsupportedHint(yyS[yypt-3].ident)
  1051. parser.yyVAL.hint = nil
  1052. }
  1053. case 9:
  1054. {
  1055. h := yyS[yypt-1].hint
  1056. h.HintName = model.NewCIStr(yyS[yypt-3].ident)
  1057. parser.yyVAL.hint = h
  1058. }
  1059. case 10:
  1060. {
  1061. parser.warnUnsupportedHint(yyS[yypt-3].ident)
  1062. parser.yyVAL.hint = nil
  1063. }
  1064. case 11:
  1065. {
  1066. h := yyS[yypt-1].hint
  1067. h.HintName = model.NewCIStr(yyS[yypt-3].ident)
  1068. parser.yyVAL.hint = h
  1069. }
  1070. case 12:
  1071. {
  1072. parser.warnUnsupportedHint(yyS[yypt-4].ident)
  1073. parser.yyVAL.hint = nil
  1074. }
  1075. case 13:
  1076. {
  1077. parser.yyVAL.hint = &ast.TableOptimizerHint{
  1078. HintName: model.NewCIStr(yyS[yypt-4].ident),
  1079. QBName: model.NewCIStr(yyS[yypt-2].ident),
  1080. HintData: yyS[yypt-1].number,
  1081. }
  1082. }
  1083. case 14:
  1084. {
  1085. parser.yyVAL.hint = &ast.TableOptimizerHint{
  1086. HintName: model.NewCIStr(yyS[yypt-4].ident),
  1087. QBName: model.NewCIStr(yyS[yypt-2].ident),
  1088. HintData: int64(yyS[yypt-1].number),
  1089. }
  1090. }
  1091. case 15:
  1092. {
  1093. parser.yyVAL.hint = &ast.TableOptimizerHint{
  1094. HintName: model.NewCIStr(yyS[yypt-5].ident),
  1095. HintData: ast.HintSetVar{
  1096. VarName: yyS[yypt-3].ident,
  1097. Value: yyS[yypt-1].ident,
  1098. },
  1099. }
  1100. }
  1101. case 16:
  1102. {
  1103. parser.warnUnsupportedHint(yyS[yypt-3].ident)
  1104. parser.yyVAL.hint = nil
  1105. }
  1106. case 17:
  1107. {
  1108. parser.yyVAL.hint = &ast.TableOptimizerHint{
  1109. HintName: model.NewCIStr(yyS[yypt-3].ident),
  1110. QBName: model.NewCIStr(yyS[yypt-1].ident),
  1111. }
  1112. }
  1113. case 18:
  1114. {
  1115. maxValue := uint64(math.MaxInt64) / yyS[yypt-1].number
  1116. if yyS[yypt-2].number <= maxValue {
  1117. parser.yyVAL.hint = &ast.TableOptimizerHint{
  1118. HintName: model.NewCIStr(yyS[yypt-5].ident),
  1119. HintData: int64(yyS[yypt-2].number * yyS[yypt-1].number),
  1120. QBName: model.NewCIStr(yyS[yypt-3].ident),
  1121. }
  1122. } else {
  1123. yylex.AppendError(ErrWarnMemoryQuotaOverflow.GenWithStackByArgs(int64(math.MaxInt64)))
  1124. parser.lastErrorAsWarn()
  1125. parser.yyVAL.hint = nil
  1126. }
  1127. }
  1128. case 19:
  1129. {
  1130. parser.yyVAL.hint = &ast.TableOptimizerHint{
  1131. HintName: model.NewCIStr(yyS[yypt-5].ident),
  1132. HintData: ast.HintTimeRange{
  1133. From: yyS[yypt-3].ident,
  1134. To: yyS[yypt-1].ident,
  1135. },
  1136. }
  1137. }
  1138. case 20:
  1139. {
  1140. h := yyS[yypt-1].hint
  1141. h.HintName = model.NewCIStr(yyS[yypt-4].ident)
  1142. h.QBName = model.NewCIStr(yyS[yypt-2].ident)
  1143. parser.yyVAL.hint = h
  1144. }
  1145. case 21:
  1146. {
  1147. parser.yyVAL.hint = &ast.TableOptimizerHint{
  1148. HintName: model.NewCIStr(yyS[yypt-3].ident),
  1149. QBName: model.NewCIStr(yyS[yypt-1].ident),
  1150. }
  1151. }
  1152. case 22:
  1153. {
  1154. parser.yyVAL.hint = &ast.TableOptimizerHint{
  1155. HintName: model.NewCIStr(yyS[yypt-4].ident),
  1156. QBName: model.NewCIStr(yyS[yypt-2].ident),
  1157. HintData: model.NewCIStr(yyS[yypt-1].ident),
  1158. }
  1159. }
  1160. case 23:
  1161. {
  1162. hs := yyS[yypt-1].hints
  1163. name := model.NewCIStr(yyS[yypt-4].ident)
  1164. qb := model.NewCIStr(yyS[yypt-2].ident)
  1165. for _, h := range hs {
  1166. h.HintName = name
  1167. h.QBName = qb
  1168. }
  1169. parser.yyVAL.hints = hs
  1170. }
  1171. case 24:
  1172. {
  1173. parser.yyVAL.hints = []*ast.TableOptimizerHint{yyS[yypt-0].hint}
  1174. }
  1175. case 25:
  1176. {
  1177. parser.yyVAL.hints = append(yyS[yypt-2].hints, yyS[yypt-0].hint)
  1178. }
  1179. case 26:
  1180. {
  1181. h := yyS[yypt-1].hint
  1182. h.HintData = model.NewCIStr(yyS[yypt-3].ident)
  1183. parser.yyVAL.hint = h
  1184. }
  1185. case 27:
  1186. {
  1187. parser.yyVAL.ident = ""
  1188. }
  1189. case 31:
  1190. {
  1191. parser.yyVAL.modelIdents = nil
  1192. }
  1193. case 32:
  1194. {
  1195. parser.yyVAL.modelIdents = yyS[yypt-1].modelIdents
  1196. }
  1197. case 33:
  1198. {
  1199. parser.yyVAL.modelIdents = []model.CIStr{model.NewCIStr(yyS[yypt-0].ident)}
  1200. }
  1201. case 34:
  1202. {
  1203. parser.yyVAL.modelIdents = append(yyS[yypt-2].modelIdents, model.NewCIStr(yyS[yypt-0].ident))
  1204. }
  1205. case 36:
  1206. {
  1207. parser.yyVAL.hint = &ast.TableOptimizerHint{
  1208. QBName: model.NewCIStr(yyS[yypt-0].ident),
  1209. }
  1210. }
  1211. case 37:
  1212. {
  1213. parser.yyVAL.hint = &ast.TableOptimizerHint{
  1214. Tables: []ast.HintTable{yyS[yypt-0].table},
  1215. QBName: model.NewCIStr(yyS[yypt-1].ident),
  1216. }
  1217. }
  1218. case 38:
  1219. {
  1220. h := yyS[yypt-2].hint
  1221. h.Tables = append(h.Tables, yyS[yypt-0].table)
  1222. parser.yyVAL.hint = h
  1223. }
  1224. case 39:
  1225. {
  1226. parser.yyVAL.table = ast.HintTable{
  1227. TableName: model.NewCIStr(yyS[yypt-2].ident),
  1228. QBName: model.NewCIStr(yyS[yypt-1].ident),
  1229. PartitionList: yyS[yypt-0].modelIdents,
  1230. }
  1231. }
  1232. case 40:
  1233. {
  1234. parser.yyVAL.table = ast.HintTable{
  1235. DBName: model.NewCIStr(yyS[yypt-4].ident),
  1236. TableName: model.NewCIStr(yyS[yypt-2].ident),
  1237. QBName: model.NewCIStr(yyS[yypt-1].ident),
  1238. PartitionList: yyS[yypt-0].modelIdents,
  1239. }
  1240. }
  1241. case 41:
  1242. {
  1243. h := yyS[yypt-0].hint
  1244. h.Tables = []ast.HintTable{yyS[yypt-2].table}
  1245. h.QBName = model.NewCIStr(yyS[yypt-3].ident)
  1246. parser.yyVAL.hint = h
  1247. }
  1248. case 42:
  1249. {
  1250. parser.yyVAL.hint = &ast.TableOptimizerHint{}
  1251. }
  1252. case 44:
  1253. {
  1254. parser.yyVAL.hint = &ast.TableOptimizerHint{
  1255. Indexes: []model.CIStr{model.NewCIStr(yyS[yypt-0].ident)},
  1256. }
  1257. }
  1258. case 45:
  1259. {
  1260. h := yyS[yypt-2].hint
  1261. h.Indexes = append(h.Indexes, model.NewCIStr(yyS[yypt-0].ident))
  1262. parser.yyVAL.hint = h
  1263. }
  1264. case 52:
  1265. {
  1266. parser.yyVAL.ident = strconv.FormatUint(yyS[yypt-0].number, 10)
  1267. }
  1268. case 53:
  1269. {
  1270. parser.yyVAL.number = 1024 * 1024
  1271. }
  1272. case 54:
  1273. {
  1274. parser.yyVAL.number = 1024 * 1024 * 1024
  1275. }
  1276. case 55:
  1277. {
  1278. parser.yyVAL.hint = &ast.TableOptimizerHint{HintData: true}
  1279. }
  1280. case 56:
  1281. {
  1282. parser.yyVAL.hint = &ast.TableOptimizerHint{HintData: false}
  1283. }
  1284. }
  1285. yyhintSetOffset(parser.yyVAL, parser.yyVAL.offset)
  1286. if yyEx != nil && yyEx.Reduced(r, exState, parser.yyVAL) {
  1287. return -1
  1288. }
  1289. goto yystack /* stack new state and value */
  1290. }