<!--
  Copyright 2013 The Android Open Source Project

  Licensed 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.
-->

<resources>
    <array name="image_res_ids">
        <item>@raw/android_dinner</item>
        <item>@raw/android_rose</item>
        <item>@raw/android_pumpkins_fall</item>
        <item>@raw/android_computer_back</item>
        <item>@raw/android_computer_android_studio</item>
    </array>

    <array name="text_res_ids">
        <item>@raw/cat_names</item>
        <item>@raw/dog_names</item>
    </array>

    <array name="docx_res_ids">
        <item>@raw/example</item>
    </array>
</resources>
