[Home] [Help]
SELECT dd.JOB_NAME, dd.JOB_SUBNAME,
decode(dd.local, 'X', null, CREDENTIAL_OWNER),
decode(dd.local, 'X', null,dd.CREDENTIAL_NAME),
decode(dd.local, 'N', dd.DESTINATION_OWNER, null),
decode(dd.local, 'N', dd.DESTINATION_NAME, 'LOCAL'),
lj.JOB_DEST_ID,
decode(dd.pj_enbl, 1, 'TRUE', 'FALSE'),
dd.ENABLED,
(CASE WHEN (bitand(dd.pj_status,4+8+16+32+8192+524288) > 0 OR
(lj.STATE <> 'RUNNING' AND bitand(dd.pj_status, 1) = 0))
THEN 'DISABLED'
ELSE coalesce(lj.STATE, 'SCHEDULED') END),
dd.next_run_date NEXT_START_DATE,
coalesce(lj.RUN_COUNT,0),
coalesce(lj.RETRY_COUNT,0),
coalesce(lj.FAILURE_COUNT,0),
lj.LAST_START_DATE, lj.LAST_END_DATE
FROM
(SELECT
d.job_dest_id JOB_DEST_ID,
DECODE(BITAND(d.job_status,2+65536),2,'RUNNING',2+65536,'CHAIN_STALLED',
DECODE(BITAND(d.job_status,1+4+8+16+32+128+8192),0,'SCHEDULED',1,
(CASE WHEN d.retry_count>0 THEN 'RETRY SCHEDULED'
WHEN (bitand(d.job_status, 1024) <> 0) THEN 'READY TO RUN'
ELSE 'SCHEDULED' END),
4,'COMPLETED',8,'BROKEN',16,'FAILED',
32,'SUCCEEDED' ,128,'REMOTE',8192, 'STOPPED', NULL)) STATE,
d.run_count, d.retry_count, d.failure_count,
d.last_start_date, d.last_end_date, d.program_oid parent_job_id,d.dest_oid
FROM scheduler$_comb_lw_job d) lj,
(SELECT
j0.JOB_NAME,
'SCHED$_MD_'
|| TO_CHAR(coalesce(d0.dest_oid,j0.dest_oid), 'FMXXXXXXXXX') || '_'
|| TO_CHAR(decode(d0.local, 'X', 0,
coalesce(d0.cred_oid,j0.cred_oid)), 'FMXXXXXXXXX') JOB_SUBNAME,
coalesce(d0.credential_owner,j0.credential_owner) credential_owner,
coalesce(d0.credential_name,j0.credential_name) credential_name,
d0.destination_owner,
d0.destination_name,
decode(d0.en_flag+j0.en_flag, 2, 'TRUE', 'FALSE') enabled,
j0.en_flag pj_enbl,
j0.pj_status,
j0.next_run_date, j0.parent_job_id, d0.dest_oid, d0.local
FROM
(SELECT cmu.name credential_owner, cmo.name credential_name,
wmu.name destination_owner, wmo.name destination_name,
bitand(d.flags, bitand(w.flags,bitand(coalesce(ad.flags,1),1))) en_flag,
w.obj# dest_grp_id,
wg.member_oid2 cred_oid,
wg.member_oid dest_oid,
decode(bitand(d.flags, 12),12, 'X',8, 'Y','N') local
FROM scheduler$_window_group w, scheduler$_wingrp_member wg,
scheduler$_destinations d, scheduler$_destinations ad,
user$ wmu, obj$ wmo, user$ cmu, obj$ cmo
WHERE w.obj# = wg.oid
AND wg.member_oid = wmo.obj#
AND wmo.owner# = wmu.user#
AND wg.member_oid = d.obj#
AND cmo.obj#(+) = wg.member_oid2
AND d.agtdestoid = ad.obj#(+)
AND cmo.owner# = cmu.user#(+)) d0,
(SELECT j1.credential_owner, j1.credential_name,
substr(j1.destination, 1, instr(j1.destination, '"')-1) destination_owner,
substr(j1.destination, instr(j1.destination, '"')+1,
length(j1.destination) - instr(j1.destination, '"')) destination_name,
bitand(j1.job_status, 1) en_flag,
j1.dest_oid,
j1.next_run_date,
u.name OWNER, o.name JOB_NAME, o.subname JOB_SUBNAME,
j1.obj# parent_job_id,
j1.job_status pj_status,
j1.credential_oid cred_oid
FROM scheduler$_job j1, user$ u, obj$ o
WHERE j1.obj# = o.obj# AND o.owner# = u.user#
AND o.owner# = USERENV('SCHEMAID')) j0
WHERE j0.dest_oid = d0.dest_grp_id
and (j0.cred_oid is null or j0.cred_oid != coalesce(d0.cred_oid, 0)
or not exists (select 1 from scheduler$_wingrp_member wm
where wm.oid = d0.dest_grp_id
and wm.member_oid2 is null
and wm.member_oid = d0.dest_oid))) dd
WHERE
lj.parent_job_id (+) = dd.parent_job_id and
lj.dest_oid (+) = dd.dest_oid
and (dd.pj_enbl = 1 or lj.dest_oid is not null)
UNION ALL
SELECT o1.name, o1.subname, j1.credential_owner, j1.credential_name,
j1.destination_owner, j1.destination,
j1.job_dest_id, DECODE(BITAND(j1.job_status,1),0,'FALSE','TRUE'),
decode(jd1.enabled, 'TRUE', 'TRUE',
decode(bitand(j1.flags, 274877906944), 0, 'TRUE', 'FALSE')),
DECODE(BITAND(j1.job_status,2+65536),2,'RUNNING',2+65536,'CHAIN_STALLED',
DECODE(BITAND(j1.job_status,1+4+8+16+32+128+8192),0,'DISABLED',1,
(CASE WHEN j1.retry_count>0 AND bitand(j1.flags, 549755813888) = 0
THEN 'RETRY SCHEDULED'
WHEN (bitand(j1.job_status, 1024) <> 0) THEN 'READY TO RUN'
ELSE 'SCHEDULED' END),
4,'COMPLETED',8,'BROKEN',16,'FAILED',
32,'SUCCEEDED' ,128,'REMOTE',8192, 'STOPPED', NULL)),
j1.next_run_date, j1.run_count,
decode(bitand(j1.flags, 549755813888), 0, j1.retry_count, 0),
j1.failure_count, j1.last_start_date,
(CASE WHEN j1.last_end_date>j1.last_start_date THEN j1.last_end_date
ELSE NULL END)
FROM
(select rj1.obj# obj#, rj1.credential_owner credential_owner,
rj1.credential_name credential_name,
decode(bitand(rj1.flags, 274877906944), 0, NULL,
substr(rj1.destination, 1, instr(rj1.destination, '"')-1))
destination_owner,
decode(bitand(rj1.flags, 274877906944), 0,
decode(rj1.destination, NULL, 'LOCAL', rj1.destination),
substr(rj1.destination, instr(rj1.destination, '"')+1,
length(rj1.destination) - instr(rj1.destination, '"')))
destination,
rj1.job_status job_status, rj1.flags flags,
rj1.next_run_date next_run_date, rj1.run_count run_count,
rj1.retry_count retry_count, rj1.failure_count failure_count,
rj1.last_start_date last_start_date, rj1.last_end_date last_end_date,
rj1.job_dest_id job_dest_id
from scheduler$_job rj1
union all
select lj1.obj#, lj1.credential_owner, lj1.credential_name,
decode(bitand(lj1.flags, 274877906944), 0, NULL,
substr(lj1.destination, 1, instr(lj1.destination, '"')-1)),
decode(bitand(lj1.flags, 274877906944), 0,
decode(lj1.destination, NULL, 'LOCAL', lj1.destination),
substr(lj1.destination, instr(lj1.destination, '"')+1,
length(lj1.destination) - instr(lj1.destination, '"'))),
lj1.job_status, lj1.flags,
lj1.next_run_date, lj1.run_count, lj1.retry_count,
lj1.failure_count, lj1.last_start_date, lj1.last_end_date,
lj1.job_dest_id
from scheduler$_comb_lw_job lj1) j1,
(select ro1.obj# obj#, ro1.owner# owner#, ro1.name name, ro1.subname subname
from obj$ ro1
union all
select lo1.obj#, lo1.userid, lo1.name, lo1.subname
from scheduler$_lwjob_obj lo1) o1,
(select dd.owner owner, dd.destination_name dest_name,
decode(dd.enabled, 'FALSE', 'FALSE', dd.refs_enabled) enabled
from all_scheduler_db_dests dd
union all
select 'SYS', ed.destination_name, ed.enabled
from all_scheduler_external_dests ed) jd1
WHERE j1.obj# = o1.obj# AND o1.owner# = USERENV('SCHEMAID')
AND bitand(j1.flags, 137438953472) = 0
AND bitand(j1.flags, 549755813888) = 0
AND (jd1.owner(+) = j1.destination_owner)
AND (jd1.dest_name(+) = j1.destination)
UNION ALL
SELECT do.name, do.subname,
d.credential_owner, d.credential_name,
substr(d.destination, 1, instr(d.destination, '"')-1),
substr(d.destination, instr(d.destination, '"')+1,
length(d.destination) - instr(d.destination, '"')),
d.job_dest_id, 'FALSE', 'FALSE', 'RUNNING', NULL, d.run_count,
d.retry_count, d.failure_count, d.last_start_date, d.last_end_date
FROM scheduler$_comb_lw_job d, scheduler$_lwjob_obj do,
scheduler$_job pj
WHERE d.obj# = do.obj# and do.userid = USERENV('SCHEMAID')
and d.program_oid = pj.obj#
and bitand(d.flags, 8589934592) <> 0
and bitand(d.job_status, 2) = 2
and (d.dest_oid is null or
d.dest_oid not in
(select so.obj# from obj$ so where so.owner# = 0 and so.namespace = 1
and so.name = 'SCHED$_LOCAL_PSEUDO_DB'))
and (nvl(d.dest_oid,0), nvl(d.credential_oid,0)) not in
(select nvl(wg.member_oid,0),
nvl(decode(wg.member_oid2, null, pj.credential_oid, wg.member_oid2), 0)
from scheduler$_wingrp_member wg
where wg.oid = pj.dest_oid)
SELECT DD.JOB_NAME
, DD.JOB_SUBNAME
,
DECODE(DD.LOCAL
, 'X'
, NULL
, CREDENTIAL_OWNER)
,
DECODE(DD.LOCAL
, 'X'
, NULL
, DD.CREDENTIAL_NAME)
,
DECODE(DD.LOCAL
, 'N'
, DD.DESTINATION_OWNER
, NULL)
,
DECODE(DD.LOCAL
, 'N'
, DD.DESTINATION_NAME
, 'LOCAL')
,
LJ.JOB_DEST_ID
,
DECODE(DD.PJ_ENBL
, 1
, 'TRUE'
, 'FALSE')
,
DD.ENABLED
,
(CASE WHEN (BITAND(DD.PJ_STATUS
, 4+8+16+32+8192+524288) > 0 OR
(LJ.STATE <> 'RUNNING'
AND BITAND(DD.PJ_STATUS
, 1) = 0))
THEN 'DISABLED'
ELSE COALESCE(LJ.STATE
, 'SCHEDULED') END)
,
DD.NEXT_RUN_DATE NEXT_START_DATE
,
COALESCE(LJ.RUN_COUNT
, 0)
,
COALESCE(LJ.RETRY_COUNT
, 0)
,
COALESCE(LJ.FAILURE_COUNT
, 0)
,
LJ.LAST_START_DATE
, LJ.LAST_END_DATE
FROM
(SELECT
D.JOB_DEST_ID JOB_DEST_ID
,
DECODE(BITAND(D.JOB_STATUS
, 2+65536)
, 2
, 'RUNNING'
, 2+65536
, 'CHAIN_STALLED'
,
DECODE(BITAND(D.JOB_STATUS
, 1+4+8+16+32+128+8192)
, 0
, 'SCHEDULED'
, 1
,
(CASE WHEN D.RETRY_COUNT>0 THEN 'RETRY SCHEDULED'
WHEN (BITAND(D.JOB_STATUS
, 1024) <> 0) THEN 'READY TO RUN'
ELSE 'SCHEDULED' END)
,
4
, 'COMPLETED'
, 8
, 'BROKEN'
, 16
, 'FAILED'
,
32
, 'SUCCEEDED'
, 128
, 'REMOTE'
, 8192
, 'STOPPED'
, NULL)) STATE
,
D.RUN_COUNT
, D.RETRY_COUNT
, D.FAILURE_COUNT
,
D.LAST_START_DATE
, D.LAST_END_DATE
, D.PROGRAM_OID PARENT_JOB_ID
, D.DEST_OID
FROM SCHEDULER$_COMB_LW_JOB D) LJ
,
(SELECT
J0.JOB_NAME
,
'SCHED$_MD_'
|| TO_CHAR(COALESCE(D0.DEST_OID
, J0.DEST_OID)
, 'FMXXXXXXXXX') || '_'
|| TO_CHAR(DECODE(D0.LOCAL
, 'X'
, 0
,
COALESCE(D0.CRED_OID
, J0.CRED_OID))
, 'FMXXXXXXXXX') JOB_SUBNAME
,
COALESCE(D0.CREDENTIAL_OWNER
, J0.CREDENTIAL_OWNER) CREDENTIAL_OWNER
,
COALESCE(D0.CREDENTIAL_NAME
, J0.CREDENTIAL_NAME) CREDENTIAL_NAME
,
D0.DESTINATION_OWNER
,
D0.DESTINATION_NAME
,
DECODE(D0.EN_FLAG+J0.EN_FLAG
, 2
, 'TRUE'
, 'FALSE') ENABLED
,
J0.EN_FLAG PJ_ENBL
,
J0.PJ_STATUS
,
J0.NEXT_RUN_DATE
, J0.PARENT_JOB_ID
, D0.DEST_OID
, D0.LOCAL
FROM
(SELECT CMU.NAME CREDENTIAL_OWNER
, CMO.NAME CREDENTIAL_NAME
,
WMU.NAME DESTINATION_OWNER
, WMO.NAME DESTINATION_NAME
,
BITAND(D.FLAGS
, BITAND(W.FLAGS
, BITAND(COALESCE(AD.FLAGS
, 1)
, 1))) EN_FLAG
,
W.OBJ# DEST_GRP_ID
,
WG.MEMBER_OID2 CRED_OID
,
WG.MEMBER_OID DEST_OID
,
DECODE(BITAND(D.FLAGS
, 12)
, 12
, 'X'
, 8
, 'Y'
, 'N') LOCAL
FROM SCHEDULER$_WINDOW_GROUP W
, SCHEDULER$_WINGRP_MEMBER WG
,
SCHEDULER$_DESTINATIONS D
, SCHEDULER$_DESTINATIONS AD
,
USER$ WMU
, OBJ$ WMO
, USER$ CMU
, OBJ$ CMO
WHERE W.OBJ# = WG.OID
AND WG.MEMBER_OID = WMO.OBJ#
AND WMO.OWNER# = WMU.USER#
AND WG.MEMBER_OID = D.OBJ#
AND CMO.OBJ#(+) = WG.MEMBER_OID2
AND D.AGTDESTOID = AD.OBJ#(+)
AND CMO.OWNER# = CMU.USER#(+)) D0
,
(SELECT J1.CREDENTIAL_OWNER
, J1.CREDENTIAL_NAME
,
SUBSTR(J1.DESTINATION
, 1
, INSTR(J1.DESTINATION
, '"')-1) DESTINATION_OWNER
,
SUBSTR(J1.DESTINATION
, INSTR(J1.DESTINATION
, '"')+1
,
LENGTH(J1.DESTINATION) - INSTR(J1.DESTINATION
, '"')) DESTINATION_NAME
,
BITAND(J1.JOB_STATUS
, 1) EN_FLAG
,
J1.DEST_OID
,
J1.NEXT_RUN_DATE
,
U.NAME OWNER
, O.NAME JOB_NAME
, O.SUBNAME JOB_SUBNAME
,
J1.OBJ# PARENT_JOB_ID
,
J1.JOB_STATUS PJ_STATUS
,
J1.CREDENTIAL_OID CRED_OID
FROM SCHEDULER$_JOB J1
, USER$ U
, OBJ$ O
WHERE J1.OBJ# = O.OBJ#
AND O.OWNER# = U.USER#
AND O.OWNER# = USERENV('SCHEMAID')) J0
WHERE J0.DEST_OID = D0.DEST_GRP_ID
AND (J0.CRED_OID IS NULL OR J0.CRED_OID != COALESCE(D0.CRED_OID
, 0)
OR NOT EXISTS (SELECT 1
FROM SCHEDULER$_WINGRP_MEMBER WM
WHERE WM.OID = D0.DEST_GRP_ID
AND WM.MEMBER_OID2 IS NULL
AND WM.MEMBER_OID = D0.DEST_OID))) DD
WHERE
LJ.PARENT_JOB_ID (+) = DD.PARENT_JOB_ID AND
LJ.DEST_OID (+) = DD.DEST_OID
AND (DD.PJ_ENBL = 1 OR LJ.DEST_OID IS NOT NULL)
UNION ALL
SELECT O1.NAME
, O1.SUBNAME
, J1.CREDENTIAL_OWNER
, J1.CREDENTIAL_NAME
,
J1.DESTINATION_OWNER
, J1.DESTINATION
,
J1.JOB_DEST_ID
, DECODE(BITAND(J1.JOB_STATUS
, 1)
, 0
, 'FALSE'
, 'TRUE')
,
DECODE(JD1.ENABLED
, 'TRUE'
, 'TRUE'
,
DECODE(BITAND(J1.FLAGS
, 274877906944)
, 0
, 'TRUE'
, 'FALSE'))
,
DECODE(BITAND(J1.JOB_STATUS
, 2+65536)
, 2
, 'RUNNING'
, 2+65536
, 'CHAIN_STALLED'
,
DECODE(BITAND(J1.JOB_STATUS
, 1+4+8+16+32+128+8192)
, 0
, 'DISABLED'
, 1
,
(CASE WHEN J1.RETRY_COUNT>0
AND BITAND(J1.FLAGS
, 549755813888) = 0
THEN 'RETRY SCHEDULED'
WHEN (BITAND(J1.JOB_STATUS
, 1024) <> 0) THEN 'READY TO RUN'
ELSE 'SCHEDULED' END)
,
4
, 'COMPLETED'
, 8
, 'BROKEN'
, 16
, 'FAILED'
,
32
, 'SUCCEEDED'
, 128
, 'REMOTE'
, 8192
, 'STOPPED'
, NULL))
,
J1.NEXT_RUN_DATE
, J1.RUN_COUNT
,
DECODE(BITAND(J1.FLAGS
, 549755813888)
, 0
, J1.RETRY_COUNT
, 0)
,
J1.FAILURE_COUNT
, J1.LAST_START_DATE
,
(CASE WHEN J1.LAST_END_DATE>J1.LAST_START_DATE THEN J1.LAST_END_DATE
ELSE NULL END)
FROM
(SELECT RJ1.OBJ# OBJ#
, RJ1.CREDENTIAL_OWNER CREDENTIAL_OWNER
,
RJ1.CREDENTIAL_NAME CREDENTIAL_NAME
,
DECODE(BITAND(RJ1.FLAGS
, 274877906944)
, 0
, NULL
,
SUBSTR(RJ1.DESTINATION
, 1
, INSTR(RJ1.DESTINATION
, '"')-1))
DESTINATION_OWNER
,
DECODE(BITAND(RJ1.FLAGS
, 274877906944)
, 0
,
DECODE(RJ1.DESTINATION
, NULL
, 'LOCAL'
, RJ1.DESTINATION)
,
SUBSTR(RJ1.DESTINATION
, INSTR(RJ1.DESTINATION
, '"')+1
,
LENGTH(RJ1.DESTINATION) - INSTR(RJ1.DESTINATION
, '"')))
DESTINATION
,
RJ1.JOB_STATUS JOB_STATUS
, RJ1.FLAGS FLAGS
,
RJ1.NEXT_RUN_DATE NEXT_RUN_DATE
, RJ1.RUN_COUNT RUN_COUNT
,
RJ1.RETRY_COUNT RETRY_COUNT
, RJ1.FAILURE_COUNT FAILURE_COUNT
,
RJ1.LAST_START_DATE LAST_START_DATE
, RJ1.LAST_END_DATE LAST_END_DATE
,
RJ1.JOB_DEST_ID JOB_DEST_ID
FROM SCHEDULER$_JOB RJ1
UNION ALL
SELECT LJ1.OBJ#
, LJ1.CREDENTIAL_OWNER
, LJ1.CREDENTIAL_NAME
,
DECODE(BITAND(LJ1.FLAGS
, 274877906944)
, 0
, NULL
,
SUBSTR(LJ1.DESTINATION
, 1
, INSTR(LJ1.DESTINATION
, '"')-1))
,
DECODE(BITAND(LJ1.FLAGS
, 274877906944)
, 0
,
DECODE(LJ1.DESTINATION
, NULL
, 'LOCAL'
, LJ1.DESTINATION)
,
SUBSTR(LJ1.DESTINATION
, INSTR(LJ1.DESTINATION
, '"')+1
,
LENGTH(LJ1.DESTINATION) - INSTR(LJ1.DESTINATION
, '"')))
,
LJ1.JOB_STATUS
, LJ1.FLAGS
,
LJ1.NEXT_RUN_DATE
, LJ1.RUN_COUNT
, LJ1.RETRY_COUNT
,
LJ1.FAILURE_COUNT
, LJ1.LAST_START_DATE
, LJ1.LAST_END_DATE
,
LJ1.JOB_DEST_ID
FROM SCHEDULER$_COMB_LW_JOB LJ1) J1
,
(SELECT RO1.OBJ# OBJ#
, RO1.OWNER# OWNER#
, RO1.NAME NAME
, RO1.SUBNAME SUBNAME
FROM OBJ$ RO1
UNION ALL
SELECT LO1.OBJ#
, LO1.USERID
, LO1.NAME
, LO1.SUBNAME
FROM SCHEDULER$_LWJOB_OBJ LO1) O1
,
(SELECT DD.OWNER OWNER
, DD.DESTINATION_NAME DEST_NAME
,
DECODE(DD.ENABLED
, 'FALSE'
, 'FALSE'
, DD.REFS_ENABLED) ENABLED
FROM ALL_SCHEDULER_DB_DESTS DD
UNION ALL
SELECT 'SYS'
, ED.DESTINATION_NAME
, ED.ENABLED
FROM ALL_SCHEDULER_EXTERNAL_DESTS ED) JD1
WHERE J1.OBJ# = O1.OBJ#
AND O1.OWNER# = USERENV('SCHEMAID')
AND BITAND(J1.FLAGS
, 137438953472) = 0
AND BITAND(J1.FLAGS
, 549755813888) = 0
AND (JD1.OWNER(+) = J1.DESTINATION_OWNER)
AND (JD1.DEST_NAME(+) = J1.DESTINATION)
UNION ALL
SELECT DO.NAME
, DO.SUBNAME
,
D.CREDENTIAL_OWNER
, D.CREDENTIAL_NAME
,
SUBSTR(D.DESTINATION
, 1
, INSTR(D.DESTINATION
, '"')-1)
,
SUBSTR(D.DESTINATION
, INSTR(D.DESTINATION
, '"')+1
,
LENGTH(D.DESTINATION) - INSTR(D.DESTINATION
, '"'))
,
D.JOB_DEST_ID
, 'FALSE'
, 'FALSE'
, 'RUNNING'
, NULL
, D.RUN_COUNT
,
D.RETRY_COUNT
, D.FAILURE_COUNT
, D.LAST_START_DATE
, D.LAST_END_DATE
FROM SCHEDULER$_COMB_LW_JOB D
, SCHEDULER$_LWJOB_OBJ DO
,
SCHEDULER$_JOB PJ
WHERE D.OBJ# = DO.OBJ#
AND DO.USERID = USERENV('SCHEMAID')
AND D.PROGRAM_OID = PJ.OBJ#
AND BITAND(D.FLAGS
, 8589934592) <> 0
AND BITAND(D.JOB_STATUS
, 2) = 2
AND (D.DEST_OID IS NULL OR
D.DEST_OID NOT IN
(SELECT SO.OBJ#
FROM OBJ$ SO
WHERE SO.OWNER# = 0
AND SO.NAMESPACE = 1
AND SO.NAME = 'SCHED$_LOCAL_PSEUDO_DB'))
AND (NVL(D.DEST_OID
, 0)
, NVL(D.CREDENTIAL_OID
, 0)) NOT IN
(SELECT NVL(WG.MEMBER_OID
, 0)
,
NVL(DECODE(WG.MEMBER_OID2
, NULL
, PJ.CREDENTIAL_OID
, WG.MEMBER_OID2)
, 0)
FROM SCHEDULER$_WINGRP_MEMBER WG
WHERE WG.OID = PJ.DEST_OID)
|
|
|
|