/* Metadata represendations of resources that are outside of the autogenerated
   local resource lists, or that override local resource representations.

   Resources listed here are referenced from sitemap sections and collections,
   matched by url string if there is no resource existing in ALL_RESOURCES.

   Currently, these articles can override only the generated resources
   in DISTRIBUTE_RESOURCES. A representation defined here will not be applied
   when a collection or section specifies a url that's not in DISTRIBUTE_RESOURCEs.
   Also
   So if a section url refers to a static doc that's
   not in a distribute section, you need to create an item for
   it in this file. Fix is to compare across
   ALL_RESOURCES_BY_URL.  */

METADATA['ko'].extras = METADATA['ko'].extras.concat([
 /* TODO Remove standard resources from here, such as below
 */
  {
    "lang": "ko",
    "title": "구글 플레이 2015년 비전",
    "category": "",
    "summary": "G-Star 구글 컨퍼런스",
    "url": "https://www.youtube.com/watch?v=7X9Ue0Nfdh4&index=2&list=PL_WJkTbDHdBksDBRoqfeyLchEQqBAOlNl",
    "group": "",
    "keywords": [],
    "tags": [],
    "image": "https://img.youtube.com/vi/7X9Ue0Nfdh4/hqdefault.jpg",
    "type": "youtube"
  },
  {
    "lang": "ko",
    "title": "구글 플레이 게임",
    "category": "",
    "summary": "게임 프로필, 퀘스트, 세이브드 게임 등의 신기능 소개",
    "url": "https://www.youtube.com/watch?v=83FpwuschCQ",
    "group": "",
    "keywords": [],
    "tags": [],
    "image": "https://img.youtube.com/vi/83FpwuschCQ/hqdefault.jpg",
    "type": "youtube"
  },
  {
    "lang": "ko",
    "title": "안드로이드 5.0 롤리팝을 맞이하는 개발자를 위한 안내서",
    "category": "",
    "summary": "",
    "url": "https://googledevkr.blogspot.com/2014/11/android50guidefordevelopers.html",
    "group": "",
    "keywords": [],
    "tags": [],
    "image": "https://lh5.googleusercontent.com/0Gx4Ob_WvIgNOMv3hVMuUm4O7KuSWyxCEFIvy39_6fgXh2q2azqjZf3bpZoEk-LMW-K8GwYMfyYfMUAwp38hhPQ6WFNnddhN2E2_GF3-XBQI_qjhISviz10h_mGgDWsZKA",
    "type": "blog"
  },
  {
    "lang": "ko",
    "title": "안드로이드 앱을 위한 머티리얼 디자인 체크 리스트",
    "category": "",
    "summary": "",
    "url": "https://googledevkr.blogspot.com/2014/10/material-design-on-android-checklist.html",
    "group": "",
    "keywords": [],
    "tags": [],
    "image": "https://lh4.googleusercontent.com/JKoxeDdmsj6gYHV8rmp96U1jHj7FKeMzGBaaFu35kXp5EpJR9Ei9MQFAYghjwJoycdgydw-FZTuFNY8pDx63MWhy37rKC96ajoDXEMzvo9W0sj5yC2-uSYJdhpazVOP2cA",
    "type": "blog"
  },
  {
    "lang": "ko",
    "title": "App Compat 라이브러리",
    "category": "",
    "summary": "",
    "url": "https://googledevkr.blogspot.com/2014/10/appcompat-v21-material-design-for-pre.html",
    "group": "",
    "keywords": [],
    "tags": [],
    "image": "https://2.bp.blogspot.com/-7fF9ayZ6PgI/U9iFpk5FNEI/AAAAAAAAAs0/4P4SCvdB_4M/s640/image00.png",
    "type": "blog"
  },
  {
    "lang": "ko",
    "title": "구글 플레이 게임 서비스",
    "category": "",
    "summary": "다양한 구글 플레이 게임 서비스 기능 알아보기 [영문]",
    "url": "intl/ko/google/play-services/games.html",
    "group": "",
    "keywords": [],
    "tags": [],
    "image": "https://developers.google.com/games/services/images/gamescreen3.jpg",
    "type": "distribute"
  },
]);

//must use intl/nn to override translated resources
METADATA['ko'].carousel = {
};

/**
 * Static metadata collections.
 */
METADATA['ko'].collections = {
  "launch/static/ko": {
    "title": "",
    "resources": [
      "https://www.youtube.com/watch?v=7X9Ue0Nfdh4&index=2&list=PL_WJkTbDHdBksDBRoqfeyLchEQqBAOlNl",
      "https://www.youtube.com/watch?v=83FpwuschCQ",
      "https://googledevkr.blogspot.com/2014/11/android50guidefordevelopers.html",
      "https://googledevkr.blogspot.com/2014/10/material-design-on-android-checklist.html",
      "https://googledevkr.blogspot.com/2014/10/appcompat-v21-material-design-for-pre.html",
      "distribute/googleplay/developer-console.html#alpha-beta",
      "distribute/googleplay/guide.html",
      "distribute/essentials/quality/core.html",
      "https://support.google.com/googleplay/android-developer/answer/4430948?hl=ko",
      "support.html",
      "distribute/essentials/quality/wear.html",
      "tv/index.html",
      "google/play-services/games.html",
      "distribute/monetize/ads.html"
    ]
  },
};