From c630f8f8eae9c88b2650d5e592522173e99afedf Mon Sep 17 00:00:00 2001 From: Cheng Zhou Date: Tue, 16 Dec 2025 21:29:36 +0800 Subject: [PATCH] =?UTF-8?q?Step=20F5=EF=BC=9A=E5=8F=97=E8=AF=95=E8=80=85?= =?UTF-8?q?=20&=20=E8=AE=BF=E8=A7=86=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- frontend/src/api/sites.ts | 5 + frontend/src/api/subjects.ts | 11 ++ frontend/src/api/visits.ts | 7 ++ frontend/src/components/Layout.vue | 1 + frontend/src/components/SubjectForm.vue | 83 ++++++++++++++ frontend/src/components/VisitTable.vue | 72 ++++++++++++ frontend/src/router/index.ts | 7 ++ frontend/src/views/SubjectDetail.vue | 103 +++++++++++++++++ frontend/src/views/Subjects.vue | 143 +++++++++++++++++++++++- pg_data/base/16384/24576 | Bin 8192 -> 8192 bytes pg_data/base/16384/24584 | Bin 8192 -> 8192 bytes pg_data/base/16384/24598 | Bin 8192 -> 8192 bytes pg_data/base/16384/24605 | Bin 16384 -> 16384 bytes pg_data/base/16384/24612 | Bin 16384 -> 16384 bytes pg_data/base/16384/24672 | Bin 16384 -> 16384 bytes pg_data/base/16384/24678 | Bin 16384 -> 16384 bytes pg_data/base/16384/24690 | Bin 8192 -> 8192 bytes pg_data/base/16384/24697 | Bin 16384 -> 16384 bytes pg_data/base/16384/24709 | Bin 16384 -> 16384 bytes pg_data/base/16384/24710 | Bin 8192 -> 8192 bytes pg_data/base/16384/24717 | Bin 16384 -> 16384 bytes pg_data/base/16384/24739 | Bin 16384 -> 16384 bytes pg_data/base/16384/24740 | Bin 8192 -> 8192 bytes pg_data/base/16384/24747 | Bin 16384 -> 16384 bytes pg_data/base/16384/24749 | Bin 16384 -> 16384 bytes pg_data/base/16384/24761 | Bin 16384 -> 16384 bytes pg_data/base/16384/24762 | Bin 16384 -> 16384 bytes pg_data/base/16384/24763 | Bin 8192 -> 8192 bytes pg_data/base/16384/24770 | Bin 16384 -> 16384 bytes pg_data/base/16384/24782 | Bin 16384 -> 16384 bytes pg_data/global/pg_control | Bin 8192 -> 8192 bytes pg_data/pg_wal/000000010000000000000001 | Bin 16777216 -> 16777216 bytes pg_data/pg_xact/0000 | Bin 8192 -> 8192 bytes 33 files changed, 430 insertions(+), 2 deletions(-) create mode 100644 frontend/src/api/sites.ts create mode 100644 frontend/src/api/subjects.ts create mode 100644 frontend/src/api/visits.ts create mode 100644 frontend/src/components/SubjectForm.vue create mode 100644 frontend/src/components/VisitTable.vue create mode 100644 frontend/src/views/SubjectDetail.vue diff --git a/frontend/src/api/sites.ts b/frontend/src/api/sites.ts new file mode 100644 index 00000000..5682b81f --- /dev/null +++ b/frontend/src/api/sites.ts @@ -0,0 +1,5 @@ +import { apiGet } from "./axios"; +import type { ApiListResponse } from "../types/api"; + +export const fetchSites = (studyId: string) => + apiGet>(`/api/v1/studies/${studyId}/sites/`); diff --git a/frontend/src/api/subjects.ts b/frontend/src/api/subjects.ts new file mode 100644 index 00000000..1b38570f --- /dev/null +++ b/frontend/src/api/subjects.ts @@ -0,0 +1,11 @@ +import { apiGet, apiPost, apiPatch } from "./axios"; +import type { ApiListResponse } from "../types/api"; + +export const fetchSubjects = (studyId: string, params?: Record) => + apiGet>(`/api/v1/studies/${studyId}/subjects/`, { params }); + +export const createSubject = (studyId: string, payload: Record) => + apiPost(`/api/v1/studies/${studyId}/subjects/`, payload); + +export const updateSubject = (studyId: string, subjectId: string, payload: Record) => + apiPatch(`/api/v1/studies/${studyId}/subjects/${subjectId}`, payload); diff --git a/frontend/src/api/visits.ts b/frontend/src/api/visits.ts new file mode 100644 index 00000000..1b36b92f --- /dev/null +++ b/frontend/src/api/visits.ts @@ -0,0 +1,7 @@ +import { apiGet, apiPatch } from "./axios"; + +export const fetchVisits = (studyId: string, subjectId: string) => + apiGet(`/api/v1/studies/${studyId}/subjects/${subjectId}/visits/`); + +export const updateVisit = (studyId: string, subjectId: string, visitId: string, payload: Record) => + apiPatch(`/api/v1/studies/${studyId}/subjects/${subjectId}/visits/${visitId}`, payload); diff --git a/frontend/src/components/Layout.vue b/frontend/src/components/Layout.vue index bb9a73de..47c934c9 100644 --- a/frontend/src/components/Layout.vue +++ b/frontend/src/components/Layout.vue @@ -19,6 +19,7 @@ 项目首页 里程碑 任务 + 受试者 diff --git a/frontend/src/components/SubjectForm.vue b/frontend/src/components/SubjectForm.vue new file mode 100644 index 00000000..b7a9b72b --- /dev/null +++ b/frontend/src/components/SubjectForm.vue @@ -0,0 +1,83 @@ + + + diff --git a/frontend/src/components/VisitTable.vue b/frontend/src/components/VisitTable.vue new file mode 100644 index 00000000..5734aa56 --- /dev/null +++ b/frontend/src/components/VisitTable.vue @@ -0,0 +1,72 @@ + + + + + diff --git a/frontend/src/router/index.ts b/frontend/src/router/index.ts index 96e4f5f8..282c31ea 100644 --- a/frontend/src/router/index.ts +++ b/frontend/src/router/index.ts @@ -9,6 +9,7 @@ import StudyHome from "../views/StudyHome.vue"; import Tasks from "../views/Tasks.vue"; import Milestones from "../views/Milestones.vue"; import Subjects from "../views/Subjects.vue"; +import SubjectDetail from "../views/SubjectDetail.vue"; import Aes from "../views/Aes.vue"; import DataQueries from "../views/DataQueries.vue"; import Imp from "../views/Imp.vue"; @@ -57,6 +58,12 @@ const routes: RouteRecordRaw[] = [ component: Subjects, meta: { title: "受试者", requiresStudy: true }, }, + { + path: "study/subjects/:subjectId", + name: "StudySubjectDetail", + component: SubjectDetail, + meta: { title: "受试者详情", requiresStudy: true }, + }, { path: "study/aes", name: "StudyAes", diff --git a/frontend/src/views/SubjectDetail.vue b/frontend/src/views/SubjectDetail.vue new file mode 100644 index 00000000..225db51b --- /dev/null +++ b/frontend/src/views/SubjectDetail.vue @@ -0,0 +1,103 @@ + + + + + diff --git a/frontend/src/views/Subjects.vue b/frontend/src/views/Subjects.vue index eff5b545..fd14622f 100644 --- a/frontend/src/views/Subjects.vue +++ b/frontend/src/views/Subjects.vue @@ -1,13 +1,152 @@ - + diff --git a/pg_data/base/16384/24576 b/pg_data/base/16384/24576 index 6064f0d52b48a69d75975dfb6c05804dcd3e3337..8cbdcf86d13320172cab16bfd4193dfd98f9f56e 100644 GIT binary patch delta 28 icmZp0XmDU-00NDcjcjdFjGHI-O4T#&-^?rhnFRoC=m?1b delta 28 icmZp0XmDU-0D=#q8`;{V7-vrIm8xglu$fo-GYbH7UR<8`;9d88>W>6<^E&07DQ4H2?qr diff --git a/pg_data/base/16384/24598 b/pg_data/base/16384/24598 index 91934de165d51befa259b150071fd247f8bebcc0..61c800e199099b2784fcf5510bd6246dbee355ab 100644 GIT binary patch delta 124 zcmZp0XmH?X0D=iIM;Jl01w+9^epTjzxf?b*TFQoRWoBU52E;JH!N9>VnNi|=Q^Om( zS`RPo6$f(MkCjgjoxi0xxyjAt^p@Q-|2e(5F3BI9S(2)2C>)%Tn3tZBmbo@W!sz!;5>xfgJZ^ M<vd)V&)0JL=x4FCWD delta 37 rcmZo@U~Fh$+`yv1eWPbPBLfhaFnCPnSCHLopui$OF+gUrkNp+^#eND- diff --git a/pg_data/base/16384/24612 b/pg_data/base/16384/24612 index 36334ead3ce1827c786b14d387c5d2809438bf59..4f3e69c4d8acf930b62fc0d035698a4d194ac580 100644 GIT binary patch delta 57 zcmZo@U~Fh$+`yv1ZQ*rqGt4vCGbBDZ#4#i^INsUA(a+sgAFNWrE!0TC z#oy0WLDvpUx0iiByXe#8He12^lI?$E1zs{S>_u}6AJi>>d8AilhPZ85+%avHldQ#zfiWRx0&&I`G-vQYox%FvLn*P)gKtZY>c!^x$Fn9`iMsv&KO>Rx zqI=k^i$A8v`PO}wgjyNm80?)Il31LrkOl;n7G{RJ28Jnyx+dnPX1bP%KvtTCrMYRU zNs4)Dn(^drYgvPT#;2`8v9SrwdTyxoAG{tKGcR@)+#bJZ=^3k+%99&xqy#J{{z&O#;Sl7}tIa$}lG{r#I!pzb_*V4q&JSoLACDFjx S1Y{)#LlYa=&dt{?HQ4~x=I6lx delta 41 vcmZo@U~Fh$+`yv1!|?wwBLfgPFx-%wETCYpIZ?q}Y;%D^BJ<`OmKtmT_Rb6B diff --git a/pg_data/base/16384/24678 b/pg_data/base/16384/24678 index 15c9ba8c4bd0d0ad371eafd4e62ae36219f1703b..531f00d807d646220b043abbecf01f0747016610 100644 GIT binary patch delta 203 zcmZo@U~Fh$+`ytBx1;$8BLfhyFlI=7kY`Z&?f3qAO@mcV+1kpT!kFg%d@AkU%zVn3K`z+eHy4`vxKYyi>|<{L0n%rRi_ f0OB3<3>Z$#o$RELHF<-A&qk+DlA9k{$*}?e>tGtq diff --git a/pg_data/base/16384/24690 b/pg_data/base/16384/24690 index 7a8458c61cff7749f37b484bcb31f0480767d712..920f519696391e1f664ddb34ddfc0d669cd62ff2 100644 GIT binary patch delta 165 zcmZp0XmH?X0D=jUM;Jl01_Q@Leo+>Vc?^sj4IjwXZ)66EA^-~mHv==LLOdH($nt^J zgE%1_w0ZMOfm#bt10NzeBY5)KL delta 35 ncmZp0XmH?X0D=P_4l{yi6^4$9{GuC;uE|bx=-b>OSHTDXtA+|} diff --git a/pg_data/base/16384/24697 b/pg_data/base/16384/24697 index d725cb2c18973cd03c92e20cd66017822c4b1073..11aeab1de603ffdfc6c9989f58228903760aa660 100644 GIT binary patch delta 69 zcmZo@U~Fh$+`ytBn;>QOM;Jl01;YaAi2^Dt3uX&2Zgk9$PTb545=Ha=+6$t5)wTXHKoef+~Gzn2x~?^i!B4BLfiVFjP$DSCHN46d*sj#=Zprq-Y7V diff --git a/pg_data/base/16384/24739 b/pg_data/base/16384/24739 index 3e6268dec1d283de534f91a3779496785518cb78..50bde2fbd85070ecab3f5eb3d8acdf9da2f66006 100644 GIT binary patch delta 47 zcmZo@U~Fh$+`yv1t>AcskpTz{7!oG)D@d{@%r{^-FyCOKqp3V2$K+aj@yRvzEdU*p B48H&X delta 37 rcmZo@U~Fh$+`yv1z2V(qMg}0zVW^nQuOP{MV7|dd$3XeXHTEq4))5Pd diff --git a/pg_data/base/16384/24740 b/pg_data/base/16384/24740 index a264ab19dfa20c25b481c16b383cb6e9ddc34cfe..b374bb71d3fbc9cc01e764a240395532d385e94f 100644 GIT binary patch delta 298 zcmZp0XmAi<0D^#qBa9&0gkgisL;)ENgSj6VHq2pQ+-O)MQ@@j$fng62!vH%2cf({w zg?cuqz-^QHdj;mZtezp){Oed}L+1P~#mP->E~mHbp83z|#dXQ1hBtP#9$wrl4&=BW zE1w)H931MT>lhm1FYM|UcYUltIEK@2gD%oj{k40z)L2EGjU+Lo?#o%a*!in p0O$Y*W>y7ziX9*t>>T9k>gVa_4t4;{Vi@fSv@@J}^E%leCIF9ST%Z5| delta 37 pcmZp0XmAi<0D=W;w=;rh9flRM69r^8I_1f14B%tjyh1jD2>`7K38Mf2 diff --git a/pg_data/base/16384/24747 b/pg_data/base/16384/24747 index 0b277f7d75487ad6605c9478f82cf2705bc59aac..fef49cf506491ec073ddd46983b9308c2830c07e 100644 GIT binary patch delta 58 zcmZo@U~Fh$+`yv1tq^&HkpT#F7%C?7D@Za|%s1HR7$`5o#vs9P+hqP;f%z`0XUH}G NI@Z~cIeCJ80RYfz62kxh delta 33 ncmZo@U~Fh$+`yv1ozSQoy ax9pzz&*{Z=N#Wp7Ctb(T5dX=U_R|60=@&}? delta 37 rcmZo@U~Fh$+`yv1y`gVABLfg3jhEB delta 37 rcmZo@U~Fh$+`yv1?a;rSkpT!a7$!{SR}f{MFyCOKW3K$i2@oT9kUr21!jL>m@o@S1M!5J42&BcT_o%GF@uyL z051b?1GA>We+j6NPtMj;WwTrZmwB|9Zr$i|aQ>F!`FjQC zyR4oe*Zk{PXG12ZTd0wwTYgSXez|UGfr62jDgy&Q5Ocfu`?&(md|UfBR^TNQgWhs5 zUC*!w=m2C#03G1K%&M@Tnhp>Q@Nx9>b9Djv3FZI@UC+d@8!ZI58F(3(IS~#pF-d%) zXzTAgWmoa<-ADGj5)lH1NFiXT1N1$z0}hlyLI6zH1A}50ngh7d9PrORC2t$Mqu@H7 zHM;|URQ@640QN9LVW-66)SS$`R6Zojc?uvF!|3fmd+VXm45m2IEEeTf^LlRM{&wQU uUlY?G|5PPxv4LoCa#3n(US?i8&_rG&%Rv^nt3Vt8qrI3JHgn5-Wd;B*FWxl( delta 37 pcmZp0XmAi<0D_7M+ZjQ$1p|l7L;;PBf%cLc6DBfk=8*Zp3;>-<2}S?_ diff --git a/pg_data/base/16384/24770 b/pg_data/base/16384/24770 index 221b491dc53aae282ca0baee1bb7aa7a0b02fc8d..4673ca14559d8195956a6a319be4093705676ea4 100644 GIT binary patch delta 156 zcmZo@U~Fh$+`yus)=+8#lu_@nXomM6+pZKh$jHC2M{0F?5MC> MZel>eWFPx20E7k~;wfcV8cgN=?W8UZ> delta 34 ocmZo@U~Fh$+`yv1!!dC?BLfhaFnGvM7En;x=p-RO*~fkh0F}!KvH$=8 diff --git a/pg_data/global/pg_control b/pg_data/global/pg_control index cefd5feebabdd24d189006b4ca14dc210c171073..23cf07308b872b02eb5dd024935a57ac2fb7867f 100644 GIT binary patch delta 86 zcmZp0XmFSyq4_Mp^8BQAaGz}<#Lw)tUkLo N8#11ko9w{I3jiyF69fPN delta 86 zcmZp0XmFSyp=lE7n8^SH9b!iqL399=2612*B))N?qq-nWF-QOeHcqTu&a&_8i|v~Y M8PCg2c3|WM0FZJKcK`qY diff --git a/pg_data/pg_wal/000000010000000000000001 b/pg_data/pg_wal/000000010000000000000001 index 39c4b24470973f028f13fc83a3bbd927327056ee..17970046638b044f027462d40ffd7ccccf8db184 100644 GIT binary patch delta 442955 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 zyiM`ow8@FdavM4Ps$H)%^1zORI~?1{ujwPn{A#RY#kj{>nl<0wJb*vsfPTPb00l^h zgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^l zNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_; zh=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRp zgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^l zNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_; zh=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRp zgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^l zNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_; zh=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRp zgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^l zNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_; zh=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRp zgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^l zNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_; zh=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRp zgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^l zNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_; zh=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRp zgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^l zNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_; zh=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRp zgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^l zNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_; zh=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRp zgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^l zNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_; zh=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRp zgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^l zNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_; zh=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRp zgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^l zNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_; zh=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRp zgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^l zNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_; zh=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRp zgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^l zNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_; zh=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRp zgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^l zNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_; zh=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRp zgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^l zNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_; zh=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRp zgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^l zNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_; zh=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fRpgh+^lNQi_;h=fS^ M|4YKk_U$|VH>*}HdjJ3c delta 435284 zcmeIy=NcCR7{=i%N!eK;D>EUYkX0z7LS&OY%80CN{_(T-Dw##fCPmp92hc${3ZJ^1 zg%9_K_c?&~dY*eQ7>pSFcMWNahPGwH+N$A=XzR9V+qP@_c4)^&wo^N|OS`sPquRYa z+OyH^)!yyXzU|kT_V0iW?4Sp?XoWKimq&KS9NvQ zbZysleK&MtH+6IKn%^zm+HKw5g6`8Aqh!HLK2dYgd`*(2}wvo5|WUFBqSjTNk~Exl8}TXBq0e&NJ0{lkc1>8 zAqh!HLK2dYgd`*(2}wvo5|WUFBqSjTNk~Exl8}TXBq0e&NJ0{lkc1>8Aqh!HLK2dY zgd`*(2}wvo5|WUFBqSjTNk~Exl8}TXBq0e&NJ0{lkc1>8Aqh!HLK2dYgd`*(2}wvo z5|WUFBqSjTNk~Exl8}TXBq0e&NJ0{lkc1>8Aqh!HLK2dYgd`*(2}wvo5|WUFBqSjT zNk~Exl8}TXBq0e&NJ0{lkc1>8Aqh!HLK2dYgd`*(2}wvo5|WUFBqSjTNk~Exl8}TX zBq0e&NJ0{lkc1>8Aqh!HLK2dYgd`*(2}wvo5|WUFBqSjTNk~Exl8}TXBq0e&NJ0{l zkc1>8Aqh!HLK2dYgd`*(2}wvo5|WUFBqSjTNk~Exl8}TXBq0e&NJ0{lkc1>8Aqh!H zLK2dYgd`*(2}wvo5|WUFBqSjTNk~Exl8}TXBq0e&NJ0{lkc1>8Aqh!HLK2dYgd`*( z2}wvo5|WUFBqSjTNk~Exl8}TXBq0e&NJ0{lkc1>8Aqh!HLK2dYgd`*(2}wvo5|WUF zBqSjTNk~Exl8}TXBq0e&NJ0{lkc1>8Aqh!HLK2dYgd`*(2}wvo5|WUFBqSjTNk~Ex zl8}TXBq0e&NJ0{lkc1>8Aqh!HLK2dYgd`*(2}wvo5|WUFBqSjTNk~Exl8}TXBq0e& zNJ0{lkc1>8Aqh!HLK2dYgd`*(2}wvo5|WUFBqSjTNk~Exl8}TXBq0e&NJ0{lkc1>8 zAqh!HLK2dYgd`*(2}wvo5|WUFBqSjTNk~Exl8}TXBq0e&NJ0{lkc1>8Aqh!HLK2dY zgd`*(2}wvo5|WUFBqSjTNk~Exl8}TXBq0e&NJ0{lkc1>8Aqh!HLK2dYgd`*(2}wvo z5|WUFBqSjTNk~Exl8}TXBq0e&NJ0{lkc1>8Aqh!HLK2dYgd`*(2}wvo5|WUFBqSjT zNk~Exl8}TXBq0e&NJ0{lkc1>8Aqh!HLK2dYgd`*(2}wvo5|WUFBqSjTNk~Exl8}TX zBq0e&NJ0{lkc1>8Aqh!HLK2dYgd`*(2}wvo5|WUFBqSjTNk~Exl8}TXBq0e&NJ0{l zkc1>8Aqh!HLK2dYgd`*(2}wvo5|WUFBqSjTNk~Exl8}TXBq0e&NJ0{lkc1>8Aqh!H zLK2dYgd`*(2}wvo5|WUFBqSjTNk~Exl8}TXBq0e&NJ0{lkc1>8Aqh!HLK2dYgd`*( z2}wvo5|WUFBqSjTNk~Exl8}TXBq0e&NJ0{lkc1>8Aqh!HLK2dYgd`*(2}wvo5|WUF zBqSjTNk~Exl8}TXBq0e&NJ0{lkc1>8Aqh!HLK2dYgd`*(2}wvo5|WUFBqSjTNk~Ex zl8}TXBq0e&NJ0{lkc1>8Aqh!HLK2dYgd`*(2}wvo5|WUFBqSjTNk~Exl8}TXBq0e& zNJ0{lkc1>8Aqh!HLK2dYgd`*(2}wvo5|WUFBqSjTNk~Exl8}TXBq0e&NJ0{lkc1>8 zAqh!HLK2dYgd`*(2}wvo5|WUFBqSjTNk~Exl8}TXBq0e&NJ0{lkc1>8Aqh!HLK2dY zgd`*(2}wvo5|WUFBqSjTNk~Exl8}TXBq0e&NJ0{lkc1>8Aqh!HLK2dYgd`*(2}wvo z5|WUFBqSjTNk~Exl8}TXBq0e&NJ0{lkc1>8Aqh!HLK2dYgd`*(2}wvo5|WUFBqSjT zNk~Exl8}TXBq0e&NJ0{lkc1>8Aqh!HLK2dYgd`*(2}wvo5|WUFBqSjTNk~Exl8}TX zBq0e&NJ0{lkc1>8Aqh!HLK2dYgd`*(2}wvo5|WUFBqSjTNk~Exl8}TXBq0e&NJ0{l zkc1>8Aqh!HLK2dYgd`*(2}wvo5|WUFBqSjTNk~Exl8}TXBq0e&NJ0{lkc1>8Aqh!H zLK2dYgd`*(2}wvo5|WUFBqSjTNk~Exl8}TXBq0e&NJ0{lkc1>8Aqh!HLK2dYgd`*( z2}wvo5|WUFBqSjTNk~Exl8}TXBq0e&NJ0{lkc1>8Aqh!HLK2dYgd`*(2}wvo5|WUF zBqSjTNk~Exl8}TXBq0e&NJ0{lkc1>8Aqh!HLK2dYgd`*(2}wvo5|WUFBqSjTNk~Ex zl8}TXBq0e&NJ0{lkc1>8Aqh!HLK2dYgd`*(2}wvo5|WUFBqSjTNk~Exl8}TXBq0e& zNJ0{lkc1>8Aqh!HLK2dYgd`*(2}wvo5|WUFBqSjTNk~Exl8}TXBq0e&NJ0{lkc1>8 zAqh!HLK2dYgd`*(2}wvo5|WUFBqSjTNk~Exl8}TXBq0e&NJ0{lkc1>8Aqh!HLK2dY zgd`*(2}wvo5|WUFBqSjTNk~Exl8}TXBq0e&NJ0{lkc1>8Aqh!HLK2dYgd`*(2}wvo z5|WUFBqSjTNk~Exl8}TXBq0e&NJ0{lkc1>8Aqh!HLK2dYgd`*(2}wvo5|WUFBqSjT zNk~Exl8}TXBq0e&NJ0{lkc1>8Aqh!HLK2dYgd`*(2}wvo5|WUFBqSjTNk~Exl8}TX zBq0e&NJ0{lkc1>8Aqh!HLK2dYgd`*(2}wvo5|WUFBqSjTNk~Exl8}TXBq0e&NJ0{l zkc1>8Aqh!HLK2dYgd`*(2}wvo5|WUFBqSjTNk~Exl8}TXBq0e&NJ0{lkc1>8Aqh!H zLK2dYgd`*(2}wvo5|WUFBqSjTNk~Exl8}TXBq0e&NJ0{lkc1>8Aqh!HLK2dYgd`*( z2}wvo5|WUFBqSjTNk~Exl8}TXBq0e&NJ0{lkc1>8Aqh!HLK2dYgd`*(2}wvo5|WUF zBqSjTNk~Exl8}TXBq0e&NJ0{lkc1>8Aqh!HLK2dYgd`*(2}wvo5|WUFBqSjTNk~Ex wl8}TXBq0e&NJ0{lkc1>8Aqh!HLK2dYgd`*(2}wvo5|WUF{}&0z{Ig)(X6nk@#Q*>R diff --git a/pg_data/pg_xact/0000 b/pg_data/pg_xact/0000 index 0dc4a5357aae87dee2e80dae4947830f56b7b5b8..1bc456bd6b29e94d6a2229f793b9f57dcd463ae6 100644 GIT binary patch delta 17 XcmZp0XmFVDh9wjTHh$!nXJh~XKHUZ; delta 15 WcmZp0XmFVDhLLgOM}GN9j4S{#2nA*U