专属域名
文档搜索
轩辕助手
Run助手
邀请有礼
返回顶部
快速返回页面顶部
收起
收起工具栏
轩辕镜像 官方专业版
轩辕镜像 官方专业版轩辕镜像 官方专业版官方专业版
首页个人中心搜索镜像

交易
充值流量我的订单
工具
提交工单镜像收录一键安装
Npm 源Pip 源Homebrew 源
帮助
常见问题
其他
关于我们网站地图

官方QQ群: 1072982923

热门搜索:openclaw🔥nginx🔥redis🔥mysqlopenjdkcursorweb2apimemgraphzabbixetcdubuntucorednsjdk
container-registry.oracle.com/database/ords

container-registry.oracle.com/database/ords:25.1.1

container-registry.oracle.com
container-registry.oracle.comlinux/amd6425.1.1大小: 未知更新于 2026年4月16日

Oracle REST Data Services (26.1.0) Docker 镜像文档

描述

Oracle REST Data Services (ORDS) 是一个中间层 Java 应用程序,提供数据库管理 REST API、基于浏览器的客户端 SQL Developer Web、PL/SQL 网关、SODA for REST,以及发布 RESTful Web 服务以与 Oracle 数据库中的数据库对象和存储过程交互的能力。访问 ORDS 产品页面 了解更多详情。

重要公告

从 ORDS 25.1.0 版本开始,ords-developer 镜像已被弃用。请阅读本文档以熟悉此最新官方 ords 镜像。

使用此镜像

启动 Oracle REST Data Services 实例

要启动 ORDS 实例,请执行以下命令:

podman run --name <container_name> -v <host_config_volume>:/etc/ords/config container-registry.oracle.com/database/ords:latest

其中 <container_name> 是容器名称,<host_config_volume> 是包含 ORDS 配置详情的卷。

[!NOTE]

  • 上述命令是 ORDS 容器的最基本执行方式;假设 <host_config_volume> 卷中存在有效的 ORDS 配置。
  • 本文档中,尖括号 < > 内的词语表示代码行中的变量。
  • 要了解高级用例,请参阅 自定义配置 部分。
  • 本文档使用 Podman 作为指定的容器运行时,但任何 OCI 兼容的1容器运行时也可使用。

自定义配置

ORDS 容器支持各种配置参数,以方便自定义配置。

示例

运行 ORDS 实例

此示例展示如何构造 podman run 命令来运行 ORDS 实例,使用可用的 ORDS 安装自定义配置选项。

podman run -d --name <container_name> \
  -p <host_https_port>:8443 -p <host_mongo_port>:27017 \
  -e FORCE_SECURE=TRUE \
  -e DEBUG=TRUE \
  -e DB_WAIT_RETRIES=<number_of_retries> \
  -e DBHOST=<database_hostname> \
  -e DBPORT=<database_port> \
  -e DBSERVICE=<database_service_name> \
  -e CONN_STRING=<custom_jdbc_url> \
  -e ORACLE_PWD=<sys_password> \
  -v [<host_config_volume>:]/etc/ords/config \
  -v [<host_apex_volume>:]/opt/oracle/apex \
  -v [<host_entrypoint_volume>:]/ords-entrypoint.d:ro \
  container-registry.oracle.com/database/ords:latest

从运行的数据库容器获取 DBHOST、DBPORT、DBSERVICENAME 和 CONN_STRING 值:

  • 数据库主机名(使用最新 23ai/free 镜像时):podman container inspect <container_name> --format "{{.Config.Hostname}}"
  • 数据库端口(使用最新 23ai/free 镜像时):podman inspect <container_name> --format '{{ (index (index .NetworkSettings.Ports "1521/tcp") 0).HostPort }}'
  • 数据库服务名(使用最新 23ai/free 镜像时):podman logs <container_name>,然后搜索可插拔数据库名称。23ai 的 PDB 默认值为 FREEPDB1。
  • 连接字符串(也称为 db.customURL)示例:
    • 简单示例:dbhostname:dbport/dbservicename
    • LDAP 示例:ldap://ldap-server:636/cn=TNSnames,cn=OracleContext,dc=my_domain,dc=com/PDBNAME
参数说明:
-d:以分离模式启动容器
--name: 容器名称(默认:自动生成)
-p: 主机端口到容器端口的映射。
  - HTTP 默认端口为 8080
  - 若 SECURE 标志为 TRUE,则为 8443
  - Mongo 监听器为 27017
-e DBHOST: 数据库的 IP/主机名,容器必须能够访问。需要 DBPORT 和 DBSERVICENAME。
-e DBPORT: 数据库监听连接的端口号。需要 DBHOST 和 DBSERVICENAME。
-e DBSERVICENAME: 要安装和配置 ORDS 的数据库服务名。需要 DBPORT 和 DBHOST。
-e CONN_STRING: 数据库自定义 URL "jdbc:oracle:thin:@"。此参数替代 DBHOST、DBPORT 和 DBSERVICENAME。
-e ORACLE_PWD: Oracle 数据库 SYS 用户密码。
-e APEX_PWD: 可选:Apex 公共用户账户密码。
-e ORACLE_USER_NAME: 可选:允许使用 SYS 以外的备用用户账户安装 ORDS(如果需要)。
-e ORACLE_USER_PWD: 可选:当设置 ORACLE_USER_NAME 时,指定备用用户的密码。
-e FORCE_SECURE: 若 FORCE_SECURE 标志为 TRUE 且配置目录 /etc/ords/config/ssl 中未提供有效证书文件,ORDS 实例将无法启动。
-e DEBUG: 若 DEBUG 标志设置为 TRUE,ORDS 实例将设置配置 debug.printDebugToScreen true;若设置为 FALSE,则设置 debug.printDebugToScreen false。
-v /etc/ords/config: ORDS 配置的数据卷。必须可由容器内的 Unix "oracle"(uid: 54321)用户写入。
-v /opt/oracle/apex: 可选:Oracle Application Express (APEX) 文件卷。若将此卷的 images 文件夹挂载到 ORDS 实例,ORDS 将设置 standalone.static.path 为 /opt/oracle/apex/images。必须可由容器内的 Unix "oracle"(uid: 54321)用户读取。
-v /ords-entrypoint.d: 可选:包含 ORDS 实例启动前要运行的自定义脚本的卷。脚本(*.sh)将按字母顺序运行。必须可由容器内的 Unix "oracle"(uid: 54321)用户读取。
使用预设配置运行 ORDS 实例

[!NOTE] 使用此选项时无需设置数据库变量。

podman run -d --name <container_name> \
  -p <host_https_port>:8443 -p <host_mongo_port>:27017 \
  -e FORCE_SECURE=TRUE -e DEBUG=TRUE \
  -v [<host_config_volume>:]/etc/ords/config \
  -v [<host_apex_volume>:]/opt/oracle/apex \
  -v [<host_entrypoint_volume>:]/ords-entrypoint.d:ro \
  container-registry.oracle.com/database/ords:latest
参数说明:
-d:以分离模式启动容器。
--name: 容器名称(默认:自动生成)
-p: 主机端口到容器端口的映射。
  - HTTP 默认端口为 8080
  - 当 SECURE 标志为 TRUE 时,HTTPS 端口为 8443
  - Mongo 监听器为 27017
-e FORCE_SECURE: 注意:当 FORCE_SECURE 标志设置为 TRUE,但 /etc/ords/config/ssl 配置目录中未提供有效证书文件时,ORDS 实例将无法启动。
-e DEBUG: 若 DEBUG 标志设置为 TRUE,ORDS 实例将设置 ORDS 配置 debug.printDebugToScreen true。
-v /etc/ords/config: ORDS 配置的数据卷。必须可由容器内的 Unix "oracle"(uid: 54321)用户写入。
-v /opt/oracle/apex: 可选:Oracle Application Express (APEX) 文件卷。将 images 文件夹挂载到 ORDS 实例会将 standalone.static.path 设置为 /opt/oracle/apex/images。必须可由容器内的 Unix "oracle"(uid: 54321)用户读取。
-v /ords-entrypoint.d: 可选:包含 ORDS 实例启动前要运行的自定义脚本的卷。脚本(*.sh)将按字母顺序运行。必须可由容器内的 Unix "oracle"(uid: 54321)用户读取。
使用 ORDS CLI

示例 1:此示例展示如何使用 ORDS CLI 命令配置客户管理的 ORDS(使用 ADB-S 服务)。

[!NOTE] 本示例中使用 Docker。

  1. 步骤 1:创建卷、下载***并创建密钥文件。
mkdir -p <host_directory>/ords_atp_config
   chmod 777 ords_atp_config
   cat secrets.txt
   chmod 755 password.txt

[!NOTE]

要下载自治数据库实例的***,请查看 下载客户端凭据 的说明。有关密钥文件中密码的更多信息,请查看 安装和配置客户管理的 ORDS 文档。

  1. 步骤 2:安装客户管理的 ORDS。
cat password.txt | docker run --rm -i \
     -v <host_directory>/ords_atp_config:/etc/ords/config \
     -v <host_directory>/atp_wallet.zip:/atp_wallet.zip \
     container-registry.oracle.com/database/ords:latest install adb --admin-user <admin_user> --db-user <db_user> --gateway-user <gateway_user> -*** /atp_wallet.zip -***-service-name <wallet_service_name> --feature-sdw true --password-stdin
  1. 步骤 3:创建 SSL 自签名证书,CN(通用名称)应为请求的域,可以是 localhost 或 FQDNS。
mkdir -p <host_directory>/ords_atp_config/ssl
   openssl req -newkey rsa:4096 -x509 -sha256 -days 3650 -nodes -out <host_directory>/ords_atp_config/ssl/cert.crt -keyout $<host_directory>/ords_atp_config/ssl/key.key -subj "/C=US/ST=State/L=City/O=my_corp Corp/OU=my_unit/CN=localhost"
   chmod -R 777 <host_directory>/ords_atp_config/ssl
  1. 步骤 4:启动客户管理的 ORDS。
docker run --rm -i \
     -p 8443:8443 \
     -v <host_directory>/ords_atp_config:/etc/ords/config \
     -v <host_directory>/atp_wallet.zip:/atp_wallet.zip \
     -v <host_directory>/apex_files/24.2/apex:/opt/oracle/apex \
     container-registry.oracle.com/database/ords:latest

示例 2:此示例展示如何使用 ORDS CLI 命令轮换数据库密码。

  1. 步骤 1:获取当前密码。
docker run \
     -v <host_config_volume>:/etc/ords/config \
     container-registry.oracle.com/database/ords:latest config get --secret db.password
  1. 步骤 2:更新密码。
docker run -it \
     -v <host_config_volume>:/etc/ords/config \
     container-registry.oracle.com/database/ords:latest config secret db.password

[!NOTE] 有关 ORDS CLI 命令的更多详情,请参见 帮助中心。

示例 Compose 文件
name: demo
services:
  db23:
    hostname: database
    image: container-registry.oracle.com/database/free:latest
    environment:
      - ORACLE_PDB=FREEPDB1
      - ORACLE_PWD=oracle
      - DBHOST=database
    volumes:
      - db_files:/opt/oracle/oradata/
    ports:
      - <host_db_port>:1521
  ords-node1:
    restart: on-failure
    hostname: ords-node
    image: container-registry.oracle.com/database/ords:latest
    environment:
      - DBSERVICENAME=FREEPDB1
      - DBHOST=database
      - DBPORT=1521
      - ORACLE_PWD=oracle
      #修改 JDK_JAVA_OPTIONS 以调整 JVM 内存
      #- JDK_JAVA_OPTIONS=-Xms1024M -Xmx1024M
    volumes:
      - ords_config:/etc/ords/config
      - <host_apex_volume>:/opt/oracle/apex
    ports:
      - <host_ords_port>:8080
    healthcheck:
      test: curl --noproxy "localhost" -f -k [***] || exit 1
      interval: 30s
      timeout: 10s
      retries: 150
    depends_on:
      db23:
        condition: service_healthy
volumes:
  ords_config:
  db_files:

[!NOTE] 在 JVM 内存分配较低的 Podman 或 Docker 机器上运行 ORDS 容器可能导致容器因 Java 内存不足异常而崩溃。您可以调整 JDK_JAVA_OPTIONS 以避免此问题(如上述示例 compose.yaml 文件所示)。

在安全端口 8443 上启动 ORDS 容器

要以安全模式(即 HTTPS,端口 8443)启动 ORDS 容器,请将 SSL 证书和密钥文件放在 ORDS 配置卷中:

<host_config_volume>/ssl/cert.crt
<host_config_volume>/ssl/key.key

或者,将文件挂载到 /etc/ords/config/ssl 目录:

-v [<host_ssl_cert>:]/etc/ords/config/ssl/cert.crt:ro \
-v [<host_ssl_key>:]/etc/ords/config/ssl/key.key:ro \

[!NOTE] SSL 证书和密钥文件必须可由容器内的 Unix "oracle"(uid: 54321)用户读取。容器将检测这些文件并在端口 8443(而非 8080)上启动 ORDS 服务。

[!NOTE] 若 FORCE_SECURE 标志已设置为 TRUE 且证书文件不可用,容器将以错误退出。但是,若 FORCE_SECURE 标志未设置且证书文件不可用/缺失,容器将使用非安全(HTTP)端口 8080 启动。

在启动 ORDS 实例前运行脚本

您可以配置 Docker/Podman 镜像在 ORDS 启动时运行脚本(支持 .sh 扩展名)。要包含启动时运行的脚本,请将主机上存放这些脚本的目录挂载到 /ords-entrypoint.d 卷。

访问 ORDS 日志

使用以下命令访问 ORDS 控制台日志(其中 <container_name> 是容器名称):

podman logs <container_name>

Footnotes

  1. 关于 Open Container Initiative (OCI)。 ↩

拉取命令

轩辕镜像通过轩辕镜像拉取

专属域名未获取到

请登录使用轩辕镜像享受快速拉取体验,支持国内访问优化,速度提升

🚀 国内优化⚡ 访问优化🔒 安全可靠
原始仓库从原始仓库拉取镜像
docker pull container-registry.oracle.com/database/ords:25.1.1

更多版本

共 39 个版本
container-registry.oracle.com/database/ords
container-registry.oracle.com/database/ords:1.0
1.0container-registry.oracle.comlinux/amd64
container-registry.oracle.com/database/ords
container-registry.oracle.com/database/ords:21.3.1
21.3.1container-registry.oracle.comlinux/amd64
container-registry.oracle.com/database/ords
container-registry.oracle.com/database/ords:21.4.0
21.4.0container-registry.oracle.comlinux/amd64
container-registry.oracle.com/database/ords
container-registry.oracle.com/database/ords:21.4.1
21.4.1container-registry.oracle.comlinux/amd64
container-registry.oracle.com/database/ords
container-registry.oracle.com/database/ords:21.4.2-gh
21.4.2-ghcontainer-registry.oracle.comlinux/amd64
container-registry.oracle.com/database/ords
container-registry.oracle.com/database/ords:22.1.1
22.1.1container-registry.oracle.comlinux/amd64
container-registry.oracle.com/database/ords
container-registry.oracle.com/database/ords:22.2.0
22.2.0container-registry.oracle.comlinux/amd64
container-registry.oracle.com/database/ords
container-registry.oracle.com/database/ords:22.3.2
22.3.2container-registry.oracle.comlinux/amd64
container-registry.oracle.com/database/ords
container-registry.oracle.com/database/ords:22.4.0
22.4.0container-registry.oracle.comlinux/amd64
container-registry.oracle.com/database/ords
container-registry.oracle.com/database/ords:22.4.1
22.4.1container-registry.oracle.comlinux/amd64
container-registry.oracle.com/database/ords
container-registry.oracle.com/database/ords:22.4.2
22.4.2container-registry.oracle.comlinux/amd64
container-registry.oracle.com/database/ords
container-registry.oracle.com/database/ords:22.4.3
22.4.3container-registry.oracle.comlinux/amd64
container-registry.oracle.com/database/ords
container-registry.oracle.com/database/ords:22.4.4
22.4.4container-registry.oracle.comlinux/amd64
container-registry.oracle.com/database/ords
container-registry.oracle.com/database/ords:23.1.0
23.1.0container-registry.oracle.comlinux/amd64
container-registry.oracle.com/database/ords
container-registry.oracle.com/database/ords:23.1.1
23.1.1container-registry.oracle.comlinux/amd64
container-registry.oracle.com/database/ords
container-registry.oracle.com/database/ords:23.1.2
23.1.2container-registry.oracle.comlinux/amd64
container-registry.oracle.com/database/ords
container-registry.oracle.com/database/ords:23.1.3
23.1.3container-registry.oracle.comlinux/amd64
container-registry.oracle.com/database/ords
container-registry.oracle.com/database/ords:23.1.4
23.1.4container-registry.oracle.comlinux/amd64
container-registry.oracle.com/database/ords
container-registry.oracle.com/database/ords:23.2.0
23.2.0container-registry.oracle.comlinux/amd64
container-registry.oracle.com/database/ords
container-registry.oracle.com/database/ords:23.2.2
23.2.2container-registry.oracle.comlinux/amd64
container-registry.oracle.com/database/ords
container-registry.oracle.com/database/ords:23.2.3
23.2.3container-registry.oracle.comlinux/amd64
container-registry.oracle.com/database/ords
container-registry.oracle.com/database/ords:23.3.0
23.3.0container-registry.oracle.comlinux/amd64
container-registry.oracle.com/database/ords
container-registry.oracle.com/database/ords:23.4.0
23.4.0container-registry.oracle.comlinux/amd64
container-registry.oracle.com/database/ords
container-registry.oracle.com/database/ords:24.1.0
24.1.0container-registry.oracle.comlinux/amd64
container-registry.oracle.com/database/ords
container-registry.oracle.com/database/ords:24.1.1
24.1.1container-registry.oracle.comlinux/amd64
container-registry.oracle.com/database/ords
container-registry.oracle.com/database/ords:24.2.2
24.2.2container-registry.oracle.comlinux/amd64
container-registry.oracle.com/database/ords
container-registry.oracle.com/database/ords:24.2.3
24.2.3container-registry.oracle.comlinux/amd64
container-registry.oracle.com/database/ords
container-registry.oracle.com/database/ords:24.3.0
24.3.0container-registry.oracle.comlinux/amd64
container-registry.oracle.com/database/ords
container-registry.oracle.com/database/ords:24.3.1
24.3.1container-registry.oracle.comlinux/amd64
container-registry.oracle.com/database/ords
container-registry.oracle.com/database/ords:24.3.2
24.3.2container-registry.oracle.comlinux/amd64
container-registry.oracle.com/database/ords
container-registry.oracle.com/database/ords:24.4.0
24.4.0container-registry.oracle.comlinux/amd64
container-registry.oracle.com/database/ords
container-registry.oracle.com/database/ords:25.1.0
25.1.0container-registry.oracle.comlinux/amd64
container-registry.oracle.com/database/ords
container-registry.oracle.com/database/ords:25.2.0
25.2.0container-registry.oracle.comlinux/amd64
container-registry.oracle.com/database/ords
container-registry.oracle.com/database/ords:25.2.3
25.2.3container-registry.oracle.comlinux/amd64
container-registry.oracle.com/database/ords
container-registry.oracle.com/database/ords:25.3.0
25.3.0container-registry.oracle.comlinux/amd64
container-registry.oracle.com/database/ords
container-registry.oracle.com/database/ords:25.3.1
25.3.1container-registry.oracle.comlinux/amd64
container-registry.oracle.com/database/ords
container-registry.oracle.com/database/ords:25.4.0
25.4.0container-registry.oracle.comlinux/amd64
container-registry.oracle.com/database/ords
container-registry.oracle.com/database/ords:26.1.0
26.1.0container-registry.oracle.comlinux/amd64
container-registry.oracle.com/database/ords
container-registry.oracle.com/database/ords:latest
latestcontainer-registry.oracle.comlinux/amd64

轩辕镜像配置手册

探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式

Docker 配置

登录仓库拉取

通过 Docker 登录认证访问私有仓库

专属域名拉取

无需登录使用专属域名

K8s Containerd

Kubernetes 集群配置 Containerd

K3s

K3s 轻量级 Kubernetes 镜像加速

Dev Containers

VS Code Dev Containers 配置

Podman

Podman 容器引擎配置

Singularity/Apptainer

HPC 科学计算容器配置

其他仓库配置

ghcr、Quay、nvcr 等镜像仓库

Harbor 镜像源配置

Harbor Proxy Repository 对接专属域名

Portainer 镜像源配置

Portainer Registries 加速拉取

Nexus 镜像源配置

Nexus3 Docker Proxy 内网缓存

系统配置

Linux

在 Linux 系统配置镜像服务

Windows/Mac

在 Docker Desktop 配置镜像

MacOS OrbStack

MacOS OrbStack 容器配置

Docker Compose

Docker Compose 项目配置

NAS 设备

群晖

Synology 群晖 NAS 配置

飞牛

飞牛 fnOS 系统配置镜像

绿联

绿联 NAS 系统配置镜像

威联通

QNAP 威联通 NAS 配置

极空间

极空间 NAS 系统配置服务

网络设备

爱快路由

爱快 iKuai 路由系统配置

宝塔面板

在宝塔面板一键配置镜像

需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单

镜像拉取常见问题

使用与功能问题

配置了专属域名后,docker search 为什么会报错?

docker search 限制

Docker Hub 上有的镜像,为什么在轩辕镜像网站搜不到?

站内搜不到镜像

机器不能直连外网时,怎么用 docker save / load 迁镜像?

离线 save/load

docker pull 拉插件报错(plugin v1+json)怎么办?

插件要用 plugin install

WSL 里 Docker 拉镜像特别慢,怎么排查和优化?

WSL 拉取慢

轩辕镜像安全吗?如何用 digest 校验镜像没被篡改?

安全与 digest

第一次用轩辕镜像拉 Docker 镜像,要怎么登录和配置?

新手拉取配置

错误码与失败问题

docker pull 提示 manifest unknown 怎么办?

manifest unknown

docker pull 提示 no matching manifest 怎么办?

no matching manifest(架构)

镜像已拉取完成,却提示 invalid tar header 或 failed to register layer 怎么办?

invalid tar header(解压)

Docker pull 时 HTTPS / TLS 证书验证失败怎么办?

TLS 证书失败

Docker pull 时 DNS 解析超时或连不上仓库怎么办?

DNS 超时

Docker 拉取出现 410 Gone 怎么办?

410 Gone 排查

出现 402 或「流量用尽」提示怎么办?

402 与流量用尽

Docker 拉取提示 UNAUTHORIZED(401)怎么办?

401 认证失败

遇到 429 Too Many Requests(请求太频繁)怎么办?

429 限流

docker login 提示 Cannot autolaunch D-Bus,还算登录成功吗?

D-Bus 凭证提示

为什么会出现「单层超过 20GB」或 413,无法加速拉取?

413 与超大单层

账号 / 计费 / 权限

轩辕镜像免费版和专业版有什么区别?

免费版与专业版区别

轩辕镜像支持哪些 Docker 镜像仓库?

支持的镜像仓库

镜像拉取失败还会不会扣流量?

失败是否计费

麒麟 V10 / 统信 UOS 提示 KYSEC 权限不够怎么办?

KYSEC 拦截脚本

如何在轩辕镜像申请开具发票?

申请开票

怎么修改轩辕镜像的网站登录和仓库登录密码?

修改登录密码

如何注销轩辕镜像账户?要注意什么?

注销账户

配置与原理类

写了 registry-mirrors,为什么还是走官方或仍然报错?

mirrors 不生效

怎么用 docker tag 去掉镜像名里的轩辕域名前缀?

去掉域名前缀

如何拉取指定 CPU 架构的镜像(如 ARM64、AMD64)?

指定架构拉取

用轩辕镜像拉镜像时快时慢,常见原因有哪些?

拉取速度原因

查看全部问题→

用户好评

来自真实用户的反馈,见证轩辕镜像的优质服务

用户头像

oldzhang

运维工程师

Linux服务器

5

"Docker访问体验非常流畅,大镜像也能快速完成下载。"

轩辕镜像
镜像详情
...
container-registry.oracle.com/database/ords
博客公告Docker 镜像公告与技术博客
热门镜像查看热门 Docker 镜像推荐
一键安装一键安装 Docker 并配置镜像源
镜像拉取问题咨询请 提交工单,官方技术交流群:1072982923。轩辕镜像所有镜像均来源于原始仓库,本站不存储、不修改、不传播任何镜像内容。
镜像拉取问题咨询请提交工单,官方技术交流群:。轩辕镜像所有镜像均来源于原始仓库,本站不存储、不修改、不传播任何镜像内容。
商务合作:点击复制邮箱
©2024-2026 源码跳动
商务合作:点击复制邮箱Copyright © 2024-2026 杭州源码跳动科技有限公司. All rights reserved.