{"version":3,"file":"keyCode.cjs","sources":["../../../../packages/utils/keyCode.ts"],"sourcesContent":["/**\n * @ignore\n * some key-codes definition and utils from closure-library\n * @author yiminghe@gmail.com\n */\n\nexport const KeyCode = {\n  /**\n   * MAC_ENTER\n   */\n  MAC_ENTER: 3,\n  /**\n   * BACKSPACE\n   */\n  BACKSPACE: 8,\n  /**\n   * TAB\n   */\n  TAB: 9,\n  /**\n   * NUMLOCK on FF/Safari Mac\n   */\n  NUM_CENTER: 12, // NUMLOCK on FF/Safari Mac\n  /**\n   * ENTER\n   */\n  ENTER: 13,\n  /**\n   * SHIFT\n   */\n  SHIFT: 16,\n  /**\n   * CTRL\n   */\n  CTRL: 17,\n  /**\n   * ALT\n   */\n  ALT: 18,\n  /**\n   * PAUSE\n   */\n  PAUSE: 19,\n  /**\n   * CAPS_LOCK\n   */\n  CAPS_LOCK: 20,\n  /**\n   * ESC\n   */\n  ESC: 27,\n  /**\n   * SPACE\n   */\n  SPACE: 32,\n  /**\n   * PAGE_UP\n   */\n  PAGE_UP: 33, // also NUM_NORTH_EAST\n  /**\n   * PAGE_DOWN\n   */\n  PAGE_DOWN: 34, // also NUM_SOUTH_EAST\n  /**\n   * END\n   */\n  END: 35, // also NUM_SOUTH_WEST\n  /**\n   * HOME\n   */\n  HOME: 36, // also NUM_NORTH_WEST\n  /**\n   * LEFT\n   */\n  LEFT: 37, // also NUM_WEST\n  /**\n   * UP\n   */\n  UP: 38, // also NUM_NORTH\n  /**\n   * RIGHT\n   */\n  RIGHT: 39, // also NUM_EAST\n  /**\n   * DOWN\n   */\n  DOWN: 40, // also NUM_SOUTH\n  /**\n   * PRINT_SCREEN\n   */\n  PRINT_SCREEN: 44,\n  /**\n   * INSERT\n   */\n  INSERT: 45, // also NUM_INSERT\n  /**\n   * DELETE\n   */\n  DELETE: 46, // also NUM_DELETE\n  /**\n   * ZERO\n   */\n  ZERO: 48,\n  /**\n   * ONE\n   */\n  ONE: 49,\n  /**\n   * TWO\n   */\n  TWO: 50,\n  /**\n   * THREE\n   */\n  THREE: 51,\n  /**\n   * FOUR\n   */\n  FOUR: 52,\n  /**\n   * FIVE\n   */\n  FIVE: 53,\n  /**\n   * SIX\n   */\n  SIX: 54,\n  /**\n   * SEVEN\n   */\n  SEVEN: 55,\n  /**\n   * EIGHT\n   */\n  EIGHT: 56,\n  /**\n   * NINE\n   */\n  NINE: 57,\n  /**\n   * QUESTION_MARK\n   */\n  QUESTION_MARK: 63, // needs localization\n  /**\n   * A\n   */\n  A: 65,\n  /**\n   * B\n   */\n  B: 66,\n  /**\n   * C\n   */\n  C: 67,\n  /**\n   * D\n   */\n  D: 68,\n  /**\n   * E\n   */\n  E: 69,\n  /**\n   * F\n   */\n  F: 70,\n  /**\n   * G\n   */\n  G: 71,\n  /**\n   * H\n   */\n  H: 72,\n  /**\n   * I\n   */\n  I: 73,\n  /**\n   * J\n   */\n  J: 74,\n  /**\n   * K\n   */\n  K: 75,\n  /**\n   * L\n   */\n  L: 76,\n  /**\n   * M\n   */\n  M: 77,\n  /**\n   * N\n   */\n  N: 78,\n  /**\n   * O\n   */\n  O: 79,\n  /**\n   * P\n   */\n  P: 80,\n  /**\n   * Q\n   */\n  Q: 81,\n  /**\n   * R\n   */\n  R: 82,\n  /**\n   * S\n   */\n  S: 83,\n  /**\n   * T\n   */\n  T: 84,\n  /**\n   * U\n   */\n  U: 85,\n  /**\n   * V\n   */\n  V: 86,\n  /**\n   * W\n   */\n  W: 87,\n  /**\n   * X\n   */\n  X: 88,\n  /**\n   * Y\n   */\n  Y: 89,\n  /**\n   * Z\n   */\n  Z: 90,\n  /**\n   * META\n   */\n  META: 91, // WIN_KEY_LEFT\n  /**\n   * WIN_KEY_RIGHT\n   */\n  WIN_KEY_RIGHT: 92,\n  /**\n   * CONTEXT_MENU\n   */\n  CONTEXT_MENU: 93,\n  /**\n   * NUM_ZERO\n   */\n  NUM_ZERO: 96,\n  /**\n   * NUM_ONE\n   */\n  NUM_ONE: 97,\n  /**\n   * NUM_TWO\n   */\n  NUM_TWO: 98,\n  /**\n   * NUM_THREE\n   */\n  NUM_THREE: 99,\n  /**\n   * NUM_FOUR\n   */\n  NUM_FOUR: 100,\n  /**\n   * NUM_FIVE\n   */\n  NUM_FIVE: 101,\n  /**\n   * NUM_SIX\n   */\n  NUM_SIX: 102,\n  /**\n   * NUM_SEVEN\n   */\n  NUM_SEVEN: 103,\n  /**\n   * NUM_EIGHT\n   */\n  NUM_EIGHT: 104,\n  /**\n   * NUM_NINE\n   */\n  NUM_NINE: 105,\n  /**\n   * NUM_MULTIPLY\n   */\n  NUM_MULTIPLY: 106,\n  /**\n   * NUM_PLUS\n   */\n  NUM_PLUS: 107,\n  /**\n   * NUM_MINUS\n   */\n  NUM_MINUS: 109,\n  /**\n   * NUM_PERIOD\n   */\n  NUM_PERIOD: 110,\n  /**\n   * NUM_DIVISION\n   */\n  NUM_DIVISION: 111,\n  /**\n   * F1\n   */\n  F1: 112,\n  /**\n   * F2\n   */\n  F2: 113,\n  /**\n   * F3\n   */\n  F3: 114,\n  /**\n   * F4\n   */\n  F4: 115,\n  /**\n   * F5\n   */\n  F5: 116,\n  /**\n   * F6\n   */\n  F6: 117,\n  /**\n   * F7\n   */\n  F7: 118,\n  /**\n   * F8\n   */\n  F8: 119,\n  /**\n   * F9\n   */\n  F9: 120,\n  /**\n   * F10\n   */\n  F10: 121,\n  /**\n   * F11\n   */\n  F11: 122,\n  /**\n   * F12\n   */\n  F12: 123,\n  /**\n   * NUMLOCK\n   */\n  NUMLOCK: 144,\n  /**\n   * SEMICOLON\n   */\n  SEMICOLON: 186, // needs localization\n  /**\n   * DASH\n   */\n  DASH: 189, // needs localization\n  /**\n   * EQUALS\n   */\n  EQUALS: 187, // needs localization\n  /**\n   * COMMA\n   */\n  COMMA: 188, // needs localization\n  /**\n   * PERIOD\n   */\n  PERIOD: 190, // needs localization\n  /**\n   * SLASH\n   */\n  SLASH: 191, // needs localization\n  /**\n   * APOSTROPHE\n   */\n  APOSTROPHE: 192, // needs localization\n  /**\n   * SINGLE_QUOTE\n   */\n  SINGLE_QUOTE: 222, // needs localization\n  /**\n   * OPEN_SQUARE_BRACKET\n   */\n  OPEN_SQUARE_BRACKET: 219, // needs localization\n  /**\n   * BACKSLASH\n   */\n  BACKSLASH: 220, // needs localization\n  /**\n   * CLOSE_SQUARE_BRACKET\n   */\n  CLOSE_SQUARE_BRACKET: 221, // needs localization\n  /**\n   * WIN_KEY\n   */\n  WIN_KEY: 224,\n  /**\n   * MAC_FF_META\n   */\n  MAC_FF_META: 224, // Firefox (Gecko) fires this for the meta key instead of 91\n  /**\n   * WIN_IME\n   */\n  WIN_IME: 229,\n\n  // ======================== Function ========================\n  /**\n   * whether text and modified key is entered at the same time.\n   */\n  isTextModifyingKeyEvent: function isTextModifyingKeyEvent(e: KeyboardEvent) {\n    const { keyCode } = e;\n    if (\n      (e.altKey && !e.ctrlKey)\n      || e.metaKey\n      // Function keys don't generate text\n      || (keyCode >= KeyCode.F1 && keyCode <= KeyCode.F12)\n    ) {\n      return false;\n    }\n\n    // The following keys are quite harmless, even in combination with\n    // CTRL, ALT or SHIFT.\n    switch (keyCode) {\n      case KeyCode.ALT:\n      case KeyCode.CAPS_LOCK:\n      case KeyCode.CONTEXT_MENU:\n      case KeyCode.CTRL:\n      case KeyCode.DOWN:\n      case KeyCode.END:\n      case KeyCode.ESC:\n      case KeyCode.HOME:\n      case KeyCode.INSERT:\n      case KeyCode.LEFT:\n      case KeyCode.MAC_FF_META:\n      case KeyCode.META:\n      case KeyCode.NUMLOCK:\n      case KeyCode.NUM_CENTER:\n      case KeyCode.PAGE_DOWN:\n      case KeyCode.PAGE_UP:\n      case KeyCode.PAUSE:\n      case KeyCode.PRINT_SCREEN:\n      case KeyCode.RIGHT:\n      case KeyCode.SHIFT:\n      case KeyCode.UP:\n      case KeyCode.WIN_KEY:\n      case KeyCode.WIN_KEY_RIGHT:\n        return false;\n      default:\n        return true;\n    }\n  },\n\n  /**\n   * whether character is entered.\n   */\n  isCharacterKey: function isCharacterKey(keyCode: number) {\n    if (keyCode >= KeyCode.ZERO && keyCode <= KeyCode.NINE)\n      return true;\n\n    if (keyCode >= KeyCode.NUM_ZERO && keyCode <= KeyCode.NUM_MULTIPLY)\n      return true;\n\n    if (keyCode >= KeyCode.A && keyCode <= KeyCode.Z)\n      return true;\n\n    // Safari sends zero key code for non-latin characters.\n    if (window.navigator.userAgent.includes('WebKit') && keyCode === 0)\n      return true;\n\n    switch (keyCode) {\n      case KeyCode.SPACE:\n      case KeyCode.QUESTION_MARK:\n      case KeyCode.NUM_PLUS:\n      case KeyCode.NUM_MINUS:\n      case KeyCode.NUM_PERIOD:\n      case KeyCode.NUM_DIVISION:\n      case KeyCode.SEMICOLON:\n      case KeyCode.DASH:\n      case KeyCode.EQUALS:\n      case KeyCode.COMMA:\n      case KeyCode.PERIOD:\n      case KeyCode.SLASH:\n      case KeyCode.APOSTROPHE:\n      case KeyCode.SINGLE_QUOTE:\n      case KeyCode.OPEN_SQUARE_BRACKET:\n      case KeyCode.BACKSLASH:\n      case KeyCode.CLOSE_SQUARE_BRACKET:\n        return true;\n      default:\n        return false;\n    }\n  },\n};\n"],"names":[],"mappings":";;AAMO,MAAM,OAAU,GAAA;AAAA;AAAA;AAAA;AAAA,EAIrB,SAAW,EAAA,CAAA;AAAA;AAAA;AAAA;AAAA,EAIX,SAAW,EAAA,CAAA;AAAA;AAAA;AAAA;AAAA,EAIX,GAAK,EAAA,CAAA;AAAA;AAAA;AAAA;AAAA,EAIL,UAAY,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAIZ,KAAO,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAIP,KAAO,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAIP,IAAM,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAIN,GAAK,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAIL,KAAO,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAIP,SAAW,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAIX,GAAK,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAIL,KAAO,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAIP,OAAS,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAIT,SAAW,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAIX,GAAK,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAIL,IAAM,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAIN,IAAM,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAIN,EAAI,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAIJ,KAAO,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAIP,IAAM,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAIN,YAAc,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAId,MAAQ,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAIR,MAAQ,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAIR,IAAM,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAIN,GAAK,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAIL,GAAK,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAIL,KAAO,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAIP,IAAM,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAIN,IAAM,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAIN,GAAK,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAIL,KAAO,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAIP,KAAO,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAIP,IAAM,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAIN,aAAe,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAIf,CAAG,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAIH,CAAG,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAIH,CAAG,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAIH,CAAG,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAIH,CAAG,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAIH,CAAG,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAIH,CAAG,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAIH,CAAG,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAIH,CAAG,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAIH,CAAG,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAIH,CAAG,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAIH,CAAG,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAIH,CAAG,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAIH,CAAG,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAIH,CAAG,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAIH,CAAG,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAIH,CAAG,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAIH,CAAG,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAIH,CAAG,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAIH,CAAG,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAIH,CAAG,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAIH,CAAG,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAIH,CAAG,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAIH,CAAG,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAIH,CAAG,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAIH,CAAG,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAIH,IAAM,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAIN,aAAe,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAIf,YAAc,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAId,QAAU,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAIV,OAAS,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAIT,OAAS,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAIT,SAAW,EAAA,EAAA;AAAA;AAAA;AAAA;AAAA,EAIX,QAAU,EAAA,GAAA;AAAA;AAAA;AAAA;AAAA,EAIV,QAAU,EAAA,GAAA;AAAA;AAAA;AAAA;AAAA,EAIV,OAAS,EAAA,GAAA;AAAA;AAAA;AAAA;AAAA,EAIT,SAAW,EAAA,GAAA;AAAA;AAAA;AAAA;AAAA,EAIX,SAAW,EAAA,GAAA;AAAA;AAAA;AAAA;AAAA,EAIX,QAAU,EAAA,GAAA;AAAA;AAAA;AAAA;AAAA,EAIV,YAAc,EAAA,GAAA;AAAA;AAAA;AAAA;AAAA,EAId,QAAU,EAAA,GAAA;AAAA;AAAA;AAAA;AAAA,EAIV,SAAW,EAAA,GAAA;AAAA;AAAA;AAAA;AAAA,EAIX,UAAY,EAAA,GAAA;AAAA;AAAA;AAAA;AAAA,EAIZ,YAAc,EAAA,GAAA;AAAA;AAAA;AAAA;AAAA,EAId,EAAI,EAAA,GAAA;AAAA;AAAA;AAAA;AAAA,EAIJ,EAAI,EAAA,GAAA;AAAA;AAAA;AAAA;AAAA,EAIJ,EAAI,EAAA,GAAA;AAAA;AAAA;AAAA;AAAA,EAIJ,EAAI,EAAA,GAAA;AAAA;AAAA;AAAA;AAAA,EAIJ,EAAI,EAAA,GAAA;AAAA;AAAA;AAAA;AAAA,EAIJ,EAAI,EAAA,GAAA;AAAA;AAAA;AAAA;AAAA,EAIJ,EAAI,EAAA,GAAA;AAAA;AAAA;AAAA;AAAA,EAIJ,EAAI,EAAA,GAAA;AAAA;AAAA;AAAA;AAAA,EAIJ,EAAI,EAAA,GAAA;AAAA;AAAA;AAAA;AAAA,EAIJ,GAAK,EAAA,GAAA;AAAA;AAAA;AAAA;AAAA,EAIL,GAAK,EAAA,GAAA;AAAA;AAAA;AAAA;AAAA,EAIL,GAAK,EAAA,GAAA;AAAA;AAAA;AAAA;AAAA,EAIL,OAAS,EAAA,GAAA;AAAA;AAAA;AAAA;AAAA,EAIT,SAAW,EAAA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAIX,IAAM,EAAA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAIN,MAAQ,EAAA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAIR,KAAO,EAAA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAIP,MAAQ,EAAA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAIR,KAAO,EAAA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAIP,UAAY,EAAA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAIZ,YAAc,EAAA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAId,mBAAqB,EAAA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAIrB,SAAW,EAAA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAIX,oBAAsB,EAAA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAItB,OAAS,EAAA,GAAA;AAAA;AAAA;AAAA;AAAA,EAIT,WAAa,EAAA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAIb,OAAS,EAAA,GAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAMT,uBAAA,EAAyB,SAAS,uBAAA,CAAwB,CAAkB,EAAA;AAC1E,IAAM,MAAA,EAAE,SAAY,GAAA,CAAA,CAAA;AACpB,IAAA,IACG,CAAE,CAAA,MAAA,IAAU,CAAC,CAAA,CAAE,OACb,IAAA,CAAA,CAAE,OAED,IAAA,OAAA,IAAW,OAAQ,CAAA,EAAA,IAAM,OAAW,IAAA,OAAA,CAAQ,GAChD,EAAA;AACA,MAAO,OAAA,KAAA,CAAA;AAAA,KACT;AAIA,IAAA,QAAQ,OAAS;AAAA,MACf,KAAK,OAAQ,CAAA,GAAA,CAAA;AAAA,MACb,KAAK,OAAQ,CAAA,SAAA,CAAA;AAAA,MACb,KAAK,OAAQ,CAAA,YAAA,CAAA;AAAA,MACb,KAAK,OAAQ,CAAA,IAAA,CAAA;AAAA,MACb,KAAK,OAAQ,CAAA,IAAA,CAAA;AAAA,MACb,KAAK,OAAQ,CAAA,GAAA,CAAA;AAAA,MACb,KAAK,OAAQ,CAAA,GAAA,CAAA;AAAA,MACb,KAAK,OAAQ,CAAA,IAAA,CAAA;AAAA,MACb,KAAK,OAAQ,CAAA,MAAA,CAAA;AAAA,MACb,KAAK,OAAQ,CAAA,IAAA,CAAA;AAAA,MACb,KAAK,OAAQ,CAAA,WAAA,CAAA;AAAA,MACb,KAAK,OAAQ,CAAA,IAAA,CAAA;AAAA,MACb,KAAK,OAAQ,CAAA,OAAA,CAAA;AAAA,MACb,KAAK,OAAQ,CAAA,UAAA,CAAA;AAAA,MACb,KAAK,OAAQ,CAAA,SAAA,CAAA;AAAA,MACb,KAAK,OAAQ,CAAA,OAAA,CAAA;AAAA,MACb,KAAK,OAAQ,CAAA,KAAA,CAAA;AAAA,MACb,KAAK,OAAQ,CAAA,YAAA,CAAA;AAAA,MACb,KAAK,OAAQ,CAAA,KAAA,CAAA;AAAA,MACb,KAAK,OAAQ,CAAA,KAAA,CAAA;AAAA,MACb,KAAK,OAAQ,CAAA,EAAA,CAAA;AAAA,MACb,KAAK,OAAQ,CAAA,OAAA,CAAA;AAAA,MACb,KAAK,OAAQ,CAAA,aAAA;AACX,QAAO,OAAA,KAAA,CAAA;AAAA,MACT;AACE,QAAO,OAAA,IAAA,CAAA;AAAA,KACX;AAAA,GACF;AAAA;AAAA;AAAA;AAAA,EAKA,cAAA,EAAgB,SAAS,cAAA,CAAe,OAAiB,EAAA;AACvD,IAAA,IAAI,OAAW,IAAA,OAAA,CAAQ,IAAQ,IAAA,OAAA,IAAW,OAAQ,CAAA,IAAA;AAChD,MAAO,OAAA,IAAA,CAAA;AAET,IAAA,IAAI,OAAW,IAAA,OAAA,CAAQ,QAAY,IAAA,OAAA,IAAW,OAAQ,CAAA,YAAA;AACpD,MAAO,OAAA,IAAA,CAAA;AAET,IAAA,IAAI,OAAW,IAAA,OAAA,CAAQ,CAAK,IAAA,OAAA,IAAW,OAAQ,CAAA,CAAA;AAC7C,MAAO,OAAA,IAAA,CAAA;AAGT,IAAA,IAAI,OAAO,SAAU,CAAA,SAAA,CAAU,QAAS,CAAA,QAAQ,KAAK,OAAY,KAAA,CAAA;AAC/D,MAAO,OAAA,IAAA,CAAA;AAET,IAAA,QAAQ,OAAS;AAAA,MACf,KAAK,OAAQ,CAAA,KAAA,CAAA;AAAA,MACb,KAAK,OAAQ,CAAA,aAAA,CAAA;AAAA,MACb,KAAK,OAAQ,CAAA,QAAA,CAAA;AAAA,MACb,KAAK,OAAQ,CAAA,SAAA,CAAA;AAAA,MACb,KAAK,OAAQ,CAAA,UAAA,CAAA;AAAA,MACb,KAAK,OAAQ,CAAA,YAAA,CAAA;AAAA,MACb,KAAK,OAAQ,CAAA,SAAA,CAAA;AAAA,MACb,KAAK,OAAQ,CAAA,IAAA,CAAA;AAAA,MACb,KAAK,OAAQ,CAAA,MAAA,CAAA;AAAA,MACb,KAAK,OAAQ,CAAA,KAAA,CAAA;AAAA,MACb,KAAK,OAAQ,CAAA,MAAA,CAAA;AAAA,MACb,KAAK,OAAQ,CAAA,KAAA,CAAA;AAAA,MACb,KAAK,OAAQ,CAAA,UAAA,CAAA;AAAA,MACb,KAAK,OAAQ,CAAA,YAAA,CAAA;AAAA,MACb,KAAK,OAAQ,CAAA,mBAAA,CAAA;AAAA,MACb,KAAK,OAAQ,CAAA,SAAA,CAAA;AAAA,MACb,KAAK,OAAQ,CAAA,oBAAA;AACX,QAAO,OAAA,IAAA,CAAA;AAAA,MACT;AACE,QAAO,OAAA,KAAA,CAAA;AAAA,KACX;AAAA,GACF;AACF;;;;"}