TDCRPy 2.8.0__py3-none-any.whl → 2.11.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Potentially problematic release.
This version of TDCRPy might be problematic. Click here for more details.
- tdcrpy/TDCR_model_lib.py +82 -121
- tdcrpy/config.toml +1 -1
- {tdcrpy-2.8.0.dist-info → tdcrpy-2.11.0.dist-info}/METADATA +1 -1
- {tdcrpy-2.8.0.dist-info → tdcrpy-2.11.0.dist-info}/RECORD +7 -7
- {tdcrpy-2.8.0.dist-info → tdcrpy-2.11.0.dist-info}/WHEEL +0 -0
- {tdcrpy-2.8.0.dist-info → tdcrpy-2.11.0.dist-info}/licenses/LICENCE.md +0 -0
- {tdcrpy-2.8.0.dist-info → tdcrpy-2.11.0.dist-info}/top_level.txt +0 -0
tdcrpy/TDCR_model_lib.py
CHANGED
|
@@ -61,8 +61,12 @@ def readParameters(disp=False):
|
|
|
61
61
|
fAq = config["Inputs"].getfloat("fAq")
|
|
62
62
|
micCorr = config["Inputs"].getboolean("micCorr")
|
|
63
63
|
alphaDir = config["Inputs"].getfloat("alphaDir")
|
|
64
|
-
effQuantic = config["Inputs"].
|
|
65
|
-
|
|
64
|
+
effQuantic = config["Inputs"].get("effQuantum")
|
|
65
|
+
effQuantic = effQuantic.split(',')
|
|
66
|
+
for i, iS in enumerate(effQuantic):
|
|
67
|
+
iS=iS.replace(" ","")
|
|
68
|
+
if iS != 'None': effQuantic[i]=float(iS)
|
|
69
|
+
optionModel = config["Inputs"].get("optionModel")
|
|
66
70
|
|
|
67
71
|
if disp:
|
|
68
72
|
print(f"number of integration bins for electrons = {nE_electron}")
|
|
@@ -3067,11 +3071,6 @@ def detectProbabilitiesMC(L, e_quenching, e_quenching2, t1, evenement, extDT, me
|
|
|
3067
3071
|
detection probability of coincidences in a C/N system.
|
|
3068
3072
|
|
|
3069
3073
|
"""
|
|
3070
|
-
if isinstance(L, (tuple, list)):
|
|
3071
|
-
symm = False
|
|
3072
|
-
else:
|
|
3073
|
-
symm = True
|
|
3074
|
-
|
|
3075
3074
|
mu = effQuantic
|
|
3076
3075
|
|
|
3077
3076
|
if dir_param < 1000:
|
|
@@ -3081,129 +3080,91 @@ def detectProbabilitiesMC(L, e_quenching, e_quenching2, t1, evenement, extDT, me
|
|
|
3081
3080
|
dirichTD = [1/3, 1/3, 1/3]
|
|
3082
3081
|
dirichCN = [1/2, 1/2]
|
|
3083
3082
|
|
|
3083
|
+
if type(L) == float:
|
|
3084
|
+
L = [L, L, L]
|
|
3085
|
+
|
|
3086
|
+
def PMBmodel(e_q, dirichTD, dirichCN, L, mu):
|
|
3087
|
+
n_e=np.zeros(3); n_eCN=np.zeros(2)
|
|
3088
|
+
n_ph = np.random.poisson(sum(np.asarray(e_q))*np.mean(L)/np.mean(mu))
|
|
3089
|
+
# TDCR
|
|
3090
|
+
n_phPMT = np.random.multinomial(n_ph, dirichTD)
|
|
3091
|
+
n_e[0]=np.random.binomial(n_phPMT[0],mu[0])
|
|
3092
|
+
n_e[1]=np.random.binomial(n_phPMT[1],mu[0])
|
|
3093
|
+
n_e[2]=np.random.binomial(n_phPMT[2],mu[0])
|
|
3094
|
+
# C/N
|
|
3095
|
+
n_phPMTCN = np.random.multinomial(n_ph, dirichCN)
|
|
3096
|
+
n_eCN[0]=np.random.binomial(n_phPMTCN[0],mu[0])
|
|
3097
|
+
n_eCN[1]=np.random.binomial(n_phPMTCN[1],mu[0])
|
|
3098
|
+
return n_e, n_eCN
|
|
3099
|
+
|
|
3100
|
+
def Pmodel(e_q, dirichTD, dirichCN, L, mu):
|
|
3101
|
+
n_e=np.zeros(3); n_eCN=np.zeros(2)
|
|
3102
|
+
n_e[0] = np.random.poisson(sum(np.asarray(e_q))*L[0]*mu[0]*dirichTD[0])
|
|
3103
|
+
n_e[1] = np.random.poisson(sum(np.asarray(e_q))*L[1]*mu[1]*dirichTD[1])
|
|
3104
|
+
n_e[2] = np.random.poisson(sum(np.asarray(e_q))*L[2]*mu[2]*dirichTD[2])
|
|
3105
|
+
n_eCN[0] = np.random.poisson(sum(np.asarray(e_q))*L[0]*mu[0]*dirichCN[0])
|
|
3106
|
+
n_eCN[1] = np.random.poisson(sum(np.asarray(e_q))*L[1]*mu[1]*dirichCN[1])
|
|
3107
|
+
return n_e, n_eCN
|
|
3108
|
+
|
|
3109
|
+
def EPmodel(e_q, dirichTD, dirichCN, L, mu):
|
|
3110
|
+
n_e=np.zeros(3); n_eCN=np.zeros(2)
|
|
3111
|
+
n_e[0] = sum(np.asarray(e_q))*L[0]*mu[0]*dirichTD[0]
|
|
3112
|
+
n_e[1] = sum(np.asarray(e_q))*L[1]*mu[1]*dirichTD[1]
|
|
3113
|
+
n_e[2] = sum(np.asarray(e_q))*L[2]*mu[2]*dirichTD[2]
|
|
3114
|
+
n_eCN[0] = sum(np.asarray(e_q))*L[0]*mu[0]*dirichCN[0]
|
|
3115
|
+
n_eCN[1] = sum(np.asarray(e_q))*L[1]*mu[1]*dirichCN[1]
|
|
3116
|
+
return n_e, n_eCN
|
|
3117
|
+
|
|
3118
|
+
# def Amodel(e_q, dirichTD, dirichCN, L, mu):
|
|
3119
|
+
# n_e=np.zeros(3); n_eCN=np.zeros(2)
|
|
3120
|
+
# n_e[0] = 1-np.exp(-L[0]*np.sum(np.asarray(e_q))*dirichTD[0])
|
|
3121
|
+
# n_e[1] = 1-np.exp(-L[0]*np.sum(np.asarray(e_q))*dirichTD[0])
|
|
3122
|
+
# n_e[2] = 1-np.exp(-L[0]*np.sum(np.asarray(e_q))*dirichTD[0])
|
|
3123
|
+
# n_eCN[0] = 1-np.exp(-L[0]*np.sum(np.asarray(e_q))*dirichTD[0])
|
|
3124
|
+
# n_eCN[1] = 1-np.exp(-L[0]*np.sum(np.asarray(e_q))*dirichTD[0])
|
|
3125
|
+
# return n_e, n_eCN
|
|
3126
|
+
|
|
3127
|
+
|
|
3084
3128
|
efficiency0_S = 0; efficiency0_T = 0; efficiency0_D = 0
|
|
3085
3129
|
efficiency0_AB = 0; efficiency0_BC = 0; efficiency0_AC = 0
|
|
3086
3130
|
efficiency0_D2 = 0;
|
|
3087
|
-
n_e = np.zeros(3); n_eCN = np.zeros(2); n_e2 = np.zeros(3); n_e2CN = np.zeros(2)
|
|
3088
|
-
|
|
3089
|
-
if
|
|
3090
|
-
|
|
3091
|
-
|
|
3092
|
-
|
|
3093
|
-
|
|
3094
|
-
|
|
3095
|
-
|
|
3096
|
-
|
|
3097
|
-
# C/N
|
|
3098
|
-
n_phPMTCN = np.random.multinomial(n_ph, dirichCN)
|
|
3099
|
-
n_eCN[0]=np.random.binomial(n_phPMTCN[0],mu)
|
|
3100
|
-
n_eCN[1]=np.random.binomial(n_phPMTCN[1],mu)
|
|
3101
|
-
elif optionModel == "poisson":
|
|
3102
|
-
n_e[0] = np.random.poisson(sum(np.asarray(e_quenching))*L*mu*dirichTD[0])
|
|
3103
|
-
n_e[1] = np.random.poisson(sum(np.asarray(e_quenching))*L*mu*dirichTD[1])
|
|
3104
|
-
n_e[2] = np.random.poisson(sum(np.asarray(e_quenching))*L*mu*dirichTD[2])
|
|
3105
|
-
n_eCN[0] = np.random.poisson(sum(np.asarray(e_quenching))*L*mu*dirichCN[0])
|
|
3106
|
-
n_eCN[1] = np.random.poisson(sum(np.asarray(e_quenching))*L*mu*dirichCN[1])
|
|
3107
|
-
else:
|
|
3108
|
-
print("unknown model")
|
|
3109
|
-
|
|
3110
|
-
if sum(n_e>1)>0: efficiency0_S =1
|
|
3111
|
-
if sum(n_e>1)>1: efficiency0_D =1
|
|
3112
|
-
if sum(n_e>1)>2: efficiency0_T =1
|
|
3113
|
-
if n_e[0]>1 and n_e[1]>1: efficiency0_AB =1
|
|
3114
|
-
if n_e[1]>1 and n_e[2]>1: efficiency0_BC =1
|
|
3115
|
-
if n_e[0]>1 and n_e[2]>1: efficiency0_AC =1
|
|
3116
|
-
if sum(n_eCN>1)>1: efficiency0_D2 =1
|
|
3117
|
-
|
|
3118
|
-
if evenement !=1 and t1 > extDT*1e-6 and t1 < measTime*60:
|
|
3119
|
-
if optionModel == "poisson-multinomial-binomial":
|
|
3120
|
-
n_ph2 = np.random.poisson(sum(np.asarray(e_quenching2))*L/mu)
|
|
3121
|
-
# TDCR
|
|
3122
|
-
n_phPMT2 = np.random.multinomial(n_ph2, dirichTD)
|
|
3123
|
-
n_e2[0]=np.random.binomial(n_phPMT2[0],mu)
|
|
3124
|
-
n_e2[1]=np.random.binomial(n_phPMT2[1],mu)
|
|
3125
|
-
n_e2[2]=np.random.binomial(n_phPMT2[2],mu)
|
|
3126
|
-
# C/N
|
|
3127
|
-
n_phPMT2CN = np.random.multinomial(n_ph2, dirichCN)
|
|
3128
|
-
n_e2CN[0]=np.random.binomial(n_phPMT2CN[0],mu)
|
|
3129
|
-
n_e2CN[1]=np.random.binomial(n_phPMT2CN[1],mu)
|
|
3130
|
-
elif optionModel == "poisson":
|
|
3131
|
-
n_e2[0] = np.random.poisson(sum(np.asarray(e_quenching2))*L*mu*dirichTD[0])
|
|
3132
|
-
n_e2[1] = np.random.poisson(sum(np.asarray(e_quenching2))*L*mu*dirichTD[1])
|
|
3133
|
-
n_e2[2] = np.random.poisson(sum(np.asarray(e_quenching2))*L*mu*dirichTD[2])
|
|
3134
|
-
n_e2CN[0] = np.random.poisson(sum(np.asarray(e_quenching2))*L*mu*dirichCN[0])
|
|
3135
|
-
n_e2CN[1] = np.random.poisson(sum(np.asarray(e_quenching2))*L*mu*dirichCN[1])
|
|
3136
|
-
else:
|
|
3137
|
-
print("unknown model")
|
|
3138
|
-
|
|
3139
|
-
|
|
3140
|
-
if sum(n_e2>1)>0: efficiency0_S +=1
|
|
3141
|
-
if sum(n_e2>1)>1: efficiency0_D +=1
|
|
3142
|
-
if sum(n_e2>1)>2: efficiency0_T +=1
|
|
3143
|
-
if n_e2[0]>1 and n_e2[1]>1: efficiency0_AB +=1
|
|
3144
|
-
if n_e2[1]>1 and n_e2[2]>1: efficiency0_BC +=1
|
|
3145
|
-
if n_e2[0]>1 and n_e2[2]>1: efficiency0_AC +=1
|
|
3146
|
-
if sum(n_e2CN>1)>1: efficiency0_D2 +=1
|
|
3131
|
+
# n_e = np.zeros(3); n_eCN = np.zeros(2); n_e2 = np.zeros(3); n_e2CN = np.zeros(2)
|
|
3132
|
+
|
|
3133
|
+
if optionModel == "poisson-multinomial-binomial":
|
|
3134
|
+
n_e, n_eCN = PMBmodel(e_quenching, dirichTD, dirichCN, L, mu)
|
|
3135
|
+
elif optionModel == "poisson":
|
|
3136
|
+
n_e, n_eCN = Pmodel(e_quenching, dirichTD, dirichCN, L, mu)
|
|
3137
|
+
elif optionModel == "expectation":
|
|
3138
|
+
n_e, n_eCN = EPmodel(e_quenching, dirichTD, dirichCN, L, mu)
|
|
3139
|
+
else:
|
|
3140
|
+
print("unknown model")
|
|
3147
3141
|
|
|
3148
|
-
|
|
3142
|
+
if sum(n_e>0)>0: efficiency0_S =1
|
|
3143
|
+
if sum(n_e>0)>1: efficiency0_D =1
|
|
3144
|
+
if sum(n_e>0)>2: efficiency0_T =1
|
|
3145
|
+
if n_e[0]>0 and n_e[1]>0: efficiency0_AB =1
|
|
3146
|
+
if n_e[1]>0 and n_e[2]>0: efficiency0_BC =1
|
|
3147
|
+
if n_e[0]>0 and n_e[2]>0: efficiency0_AC =1
|
|
3148
|
+
if sum(n_eCN>1)>1: efficiency0_D2 =1
|
|
3149
|
+
|
|
3150
|
+
if evenement !=1 and t1 > extDT*1e-6 and t1 < measTime*60:
|
|
3149
3151
|
if optionModel == "poisson-multinomial-binomial":
|
|
3150
|
-
|
|
3151
|
-
n_ph = np.random.poisson(sum(np.asarray((e_quenching))*Lm/mu))
|
|
3152
|
-
# TDCR
|
|
3153
|
-
n_phPMT = np.random.multinomial(n_ph, [L[0]*dirichTD[0]/Lm, L[1]*dirichTD[1]/Lm, L[2]*dirichTD[2]/Lm])
|
|
3154
|
-
n_e[0]=np.random.binomial(n_phPMT[0],mu)
|
|
3155
|
-
n_e[1]=np.random.binomial(n_phPMT[1],mu)
|
|
3156
|
-
n_e[2]=np.random.binomial(n_phPMT[2],mu)
|
|
3157
|
-
# C/N
|
|
3158
|
-
n_phPMTCN = np.random.multinomial(n_ph, [L[0]/(2*Lm), L[1]/(2*Lm)])
|
|
3159
|
-
n_eCN[0]=np.random.binomial(n_phPMTCN[0],mu)
|
|
3160
|
-
n_eCN[1]=np.random.binomial(n_phPMTCN[1],mu)
|
|
3152
|
+
n_e2, n_e2CN = PMBmodel(e_quenching2, dirichTD, dirichCN, L, mu)
|
|
3161
3153
|
elif optionModel == "poisson":
|
|
3162
|
-
|
|
3163
|
-
|
|
3164
|
-
|
|
3165
|
-
n_eCN[0] = np.random.poisson(sum(np.asarray(e_quenching))*L[0]*mu*dirichCN[0])
|
|
3166
|
-
n_eCN[1] = np.random.poisson(sum(np.asarray(e_quenching))*L[1]*mu*dirichCN[1])
|
|
3154
|
+
n_e2, n_e2CN = Pmodel(e_quenching2, dirichTD, dirichCN, L, mu)
|
|
3155
|
+
elif optionModel == "expectation":
|
|
3156
|
+
n_e2, n_e2CN = EPmodel(e_quenching2, dirichTD, dirichCN, L, mu)
|
|
3167
3157
|
else:
|
|
3168
3158
|
print("unknown model")
|
|
3169
|
-
|
|
3170
|
-
if sum(n_e>1)>0: efficiency0_S =1
|
|
3171
|
-
if sum(n_e>1)>1: efficiency0_D =1
|
|
3172
|
-
if sum(n_e>1)>2: efficiency0_T =1
|
|
3173
|
-
if n_e[0]>1 and n_e[1]>1: efficiency0_AB =1
|
|
3174
|
-
if n_e[1]>1 and n_e[2]>1: efficiency0_BC =1
|
|
3175
|
-
if n_e[0]>1 and n_e[2]>1: efficiency0_AC =1
|
|
3176
|
-
if sum(n_eCN>1)>1: efficiency0_D2 =1
|
|
3177
|
-
|
|
3178
|
-
if evenement !=1 and t1 > extDT*1e-6 and t1 < measTime*60:
|
|
3179
|
-
if optionModel == "poisson-multinomial-binomial":
|
|
3180
|
-
n_ph2 = np.random.poisson(sum(np.asarray(e_quenching2))*Lm/mu)
|
|
3181
|
-
# TDCR
|
|
3182
|
-
n_phPMT2 = np.random.multinomial(n_ph2, [L[0]*dirichCN[0]/Lm, L[1]*dirichCN[1]/Lm, L[2]*dirichCN[2]/Lm])
|
|
3183
|
-
n_e2[0]=np.random.binomial(n_phPMT2[0],mu)
|
|
3184
|
-
n_e2[1]=np.random.binomial(n_phPMT2[1],mu)
|
|
3185
|
-
n_e2[2]=np.random.binomial(n_phPMT2[2],mu)
|
|
3186
|
-
# C/N
|
|
3187
|
-
n_phPMT2CN = np.random.multinomial(n_ph2, [L[0]/(2*Lm), L[1]/(2*Lm)])
|
|
3188
|
-
n_e2CN[0]=np.random.binomial(n_phPMT2CN[0],mu)
|
|
3189
|
-
n_e2CN[1]=np.random.binomial(n_phPMT2CN[1],mu)
|
|
3190
|
-
elif optionModel == "poisson":
|
|
3191
|
-
n_e2[0] = np.random.poisson(sum(np.asarray(e_quenching2))*L[0]*mu*dirichTD[0])
|
|
3192
|
-
n_e2[1] = np.random.poisson(sum(np.asarray(e_quenching2))*L[1]*mu*dirichTD[1])
|
|
3193
|
-
n_e2[2] = np.random.poisson(sum(np.asarray(e_quenching2))*L[2]*mu*dirichTD[2])
|
|
3194
|
-
n_e2CN[0] = np.random.poisson(sum(np.asarray(e_quenching2))*L[0]*mu*dirichCN[0])
|
|
3195
|
-
n_e2CN[1] = np.random.poisson(sum(np.asarray(e_quenching2))*L[1]*mu*dirichCN[1])
|
|
3196
|
-
else:
|
|
3197
|
-
print("unknown model")
|
|
3198
|
-
|
|
3199
|
-
if sum(n_e2>1)>0: efficiency0_S +=1
|
|
3200
|
-
if sum(n_e2>1)>1: efficiency0_D +=1
|
|
3201
|
-
if sum(n_e2>1)>2: efficiency0_T +=1
|
|
3202
|
-
if n_e2[0]>1 and n_e2[1]>1: efficiency0_AB +=1
|
|
3203
|
-
if n_e2[1]>1 and n_e2[2]>1: efficiency0_BC +=1
|
|
3204
|
-
if n_e2[0]>1 and n_e2[2]>1: efficiency0_AC +=1
|
|
3205
|
-
if sum(n_e2CN>1)>1: efficiency0_D2 +=1
|
|
3206
3159
|
|
|
3160
|
+
if sum(n_e2>0)>0: efficiency0_S +=1
|
|
3161
|
+
if sum(n_e2>0)>1: efficiency0_D +=1
|
|
3162
|
+
if sum(n_e2>0)>2: efficiency0_T +=1
|
|
3163
|
+
if n_e2[0]>0 and n_e2[1]>0: efficiency0_AB +=1
|
|
3164
|
+
if n_e2[1]>0 and n_e2[2]>0: efficiency0_BC +=1
|
|
3165
|
+
if n_e2[0]>0 and n_e2[2]>0: efficiency0_AC +=1
|
|
3166
|
+
if sum(n_e2CN>1)>1: efficiency0_D2 +=1
|
|
3167
|
+
|
|
3207
3168
|
return efficiency0_S, efficiency0_D, efficiency0_T, efficiency0_AB, efficiency0_BC, efficiency0_AC, efficiency0_D2
|
|
3208
3169
|
|
|
3209
3170
|
|
tdcrpy/config.toml
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
tdcrpy/TDCRPy.py,sha256=VIwZJHtpjBt5e87KUqatCC6eTMr2sFVRl52LAc3PZq8,67850
|
|
2
2
|
tdcrpy/TDCRPy1.py,sha256=QTBZh5B5JWnGB0BQfD-cFmwA9W080OD4sG-aj50-ejo,38106
|
|
3
|
-
tdcrpy/TDCR_model_lib.py,sha256=
|
|
3
|
+
tdcrpy/TDCR_model_lib.py,sha256=SIC_NRJuZHPW_kXsKksicXyooHula3y-Yd2LKlBDpig,133717
|
|
4
4
|
tdcrpy/TDCRoptimize.py,sha256=c2XIGveeLdVYYek4Rg6dygMvVA2xIrIkMb3L-_jUucM,6496
|
|
5
5
|
tdcrpy/__init__.py,sha256=9Djir8dPNchcJVQvhl-oRHEOsoDkiZlkOhWT-eHR7wQ,95
|
|
6
|
-
tdcrpy/config.toml,sha256=
|
|
6
|
+
tdcrpy/config.toml,sha256=zwVBgi2xtHri9WVcipksO7jHaeuJXGXks4tYhzoRHFY,1646
|
|
7
7
|
tdcrpy/test2.py,sha256=poLLXJyIaCeqh1VSkwgbi-udvY7lQjxz_YStKjJXGhU,501
|
|
8
8
|
tdcrpy/MCNP-MATRIX/Spectra_for_analytical_model/dep_spectrum_C-14.txt,sha256=Eh3KaNbfYHakk_uStLu8K1aFciO6_i_rS2yKxGGppDE,8416
|
|
9
9
|
tdcrpy/MCNP-MATRIX/Spectra_for_analytical_model/dep_spectrum_Ca-45.txt,sha256=TymodcK4ttoO1duZuW3RGOwHFwPPzw2ESPc_H_QQN8k,8830
|
|
@@ -74,8 +74,8 @@ tdcrpy/docs/_build/html/source/modules.html,sha256=Jf-qxVBId0UgpwyvYuyjtMNG-ezPO
|
|
|
74
74
|
tdcrpy/docs/_build/html/source/tdcrpy.html,sha256=-38lHMNFB22p1tWJEeN3yDqfDiCYE304vxDamO1-iRc,3779
|
|
75
75
|
tdcrpy/test/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
76
76
|
tdcrpy/test/test_tdcrpy.py,sha256=JINqSEMFoNpptE4f3h6ZzTYW1rBx90KkaoQzltSg-No,4692
|
|
77
|
-
tdcrpy-2.
|
|
78
|
-
tdcrpy-2.
|
|
79
|
-
tdcrpy-2.
|
|
80
|
-
tdcrpy-2.
|
|
81
|
-
tdcrpy-2.
|
|
77
|
+
tdcrpy-2.11.0.dist-info/licenses/LICENCE.md,sha256=ZTpWyGU3qv_iwEpgvCijoCuCYpOPpyzJCgOk46WpUKU,1066
|
|
78
|
+
tdcrpy-2.11.0.dist-info/METADATA,sha256=PqaOFwuqYUdhziM8kGpVOMSRxCUvF5zY-U3R1QWGjic,45299
|
|
79
|
+
tdcrpy-2.11.0.dist-info/WHEEL,sha256=CmyFI0kx5cdEMTLiONQRbGQwjIoR1aIYB7eCAQ4KPJ0,91
|
|
80
|
+
tdcrpy-2.11.0.dist-info/top_level.txt,sha256=f4vzFFcKSEnonAACs0ZXuRczmroLLqtPTqXFymU_VU0,14
|
|
81
|
+
tdcrpy-2.11.0.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|