blob: c94cff2136e52d7ce124e5e06e6c578a77341cf8 [file] [log] [blame]
/*
* Copyright 2022 GlobalFoundries PDK Authors
*
* 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.
*/
cell(gf180mcu_fd_sc_mcu7t5v0__and2_4) {
area : 37.318400 ;
leakage_power() {
related_pg_pin : "VDD" ;
when : "!A1&!A2" ;
value : "0.00076248" ;
}
leakage_power() {
related_pg_pin : "VDD" ;
when : "!A1&A2" ;
value : "0.00078129" ;
}
leakage_power() {
related_pg_pin : "VDD" ;
when : "A1&!A2" ;
value : "0.00084051" ;
}
leakage_power() {
related_pg_pin : "VDD" ;
when : "A1&A2" ;
value : "0.00084609" ;
}
leakage_power() {
related_pg_pin : "VDD" ;
value : "0.00084609" ;
}
pg_pin(VDD) {
voltage_name : VDD ;
pg_type : primary_power ;
}
pg_pin(VSS) {
voltage_name : VSS ;
pg_type : primary_ground ;
}
pin(A1) {
capacitance : 0.009156 ;
direction : input ;
driver_waveform_rise : driver_waveform_default_rise ;
driver_waveform_fall : driver_waveform_default_fall ;
input_voltage : default ;
max_transition : 7 ;
related_ground_pin : VSS ;
related_power_pin : VDD ;
internal_power() {
when : "!A2" ;
fall_power(pwr_tin_10) {
index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
values("0.06556, 0.06551, 0.06532, 0.06521, 0.06521, 0.06528, 0.06528, \
0.06525, 0.06524, 0.06522");
}
rise_power(pwr_tin_10) {
index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
values("-0.04323, -0.0432, -0.04317, -0.04325, -0.04312, -0.04336, -0.0434, \
-0.04338, -0.04339, -0.04349");
}
}
}
pin(A2) {
capacitance : 0.009507 ;
direction : input ;
driver_waveform_rise : driver_waveform_default_rise ;
driver_waveform_fall : driver_waveform_default_fall ;
input_voltage : default ;
max_transition : 7 ;
related_ground_pin : VSS ;
related_power_pin : VDD ;
internal_power() {
when : "!A1" ;
fall_power(pwr_tin_10) {
index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
values("0.06581, 0.06214, 0.05947, 0.05862, 0.05836, 0.05838, 0.05841, \
0.05832, 0.0583, 0.0583");
}
rise_power(pwr_tin_10) {
index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
values("-0.05843, -0.05831, -0.05825, -0.05821, -0.05815, -0.05832, -0.05834, \
-0.05833, -0.05834, -0.05833");
}
}
}
pin(Z) {
direction : output ;
function : "(A1&A2)" ;
max_capacitance : 0.9835 ;
max_transition : 7 ;
min_capacitance : 0.001 ;
output_voltage : default ;
related_ground_pin : VSS ;
related_power_pin : VDD ;
internal_power() {
related_pin : "A1" ;
when : "A2" ;
fall_power(pwr_tin_oload_10x10) {
index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
index_2("0.001, 0.007781, 0.03158, 0.07704, 0.1479, 0.2472, 0.378, 0.5427, 0.7438, 0.9835");
values("0.4941, 0.4863, 0.4768, 0.4731, 0.471, 0.4697, 0.469, 0.4683, 0.4679, 0.4677",\
"0.4922, 0.4841, 0.475, 0.4714, 0.4692, 0.4678, 0.4672, 0.4665, 0.4661, 0.4662",\
"0.4943, 0.4859, 0.4757, 0.4719, 0.47, 0.469, 0.4682, 0.4676, 0.4674, 0.4672",\
"0.5286, 0.5179, 0.5029, 0.4954, 0.4914, 0.4895, 0.4885, 0.4878, 0.4874, 0.4871",\
"0.604, 0.5889, 0.5644, 0.5494, 0.5423, 0.5376, 0.5352, 0.5337, 0.5324, 0.5315",\
"0.7167, 0.6974, 0.6627, 0.6389, 0.6247, 0.6167, 0.6118, 0.6086, 0.6068, 0.6053",\
"0.8674, 0.8445, 0.799, 0.7646, 0.7429, 0.7298, 0.7208, 0.7153, 0.7124, 0.7096",\
"1.055, 1.029, 0.9732, 0.9279, 0.8974, 0.8775, 0.8646, 0.8563, 0.8503, 0.8464",\
"1.281, 1.252, 1.187, 1.13, 1.089, 1.061, 1.044, 1.032, 1.023, 1.017",\
"1.546, 1.514, 1.441, 1.371, 1.321, 1.286, 1.261, 1.244, 1.232, 1.224");
}
rise_power(pwr_tin_oload_10x10) {
index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
index_2("0.001, 0.007781, 0.03158, 0.07704, 0.1479, 0.2472, 0.378, 0.5427, 0.7438, 0.9835");
values("0.3209, 0.311, 0.2997, 0.2943, 0.2941, 0.2957, 0.2998, 0.3005, 0.3054, 0.3124",\
"0.3189, 0.3091, 0.2973, 0.2927, 0.292, 0.2943, 0.2967, 0.2987, 0.3036, 0.3115",\
"0.3209, 0.3112, 0.2991, 0.2929, 0.2925, 0.2943, 0.2971, 0.2992, 0.304, 0.3137",\
"0.3515, 0.3406, 0.324, 0.3137, 0.3101, 0.311, 0.3138, 0.3154, 0.3184, 0.3281",\
"0.4136, 0.3991, 0.3773, 0.3629, 0.3544, 0.3524, 0.3511, 0.3541, 0.358, 0.3667",\
"0.51, 0.4926, 0.463, 0.4423, 0.4301, 0.423, 0.4209, 0.4202, 0.4212, 0.4302",\
"0.6414, 0.6204, 0.5836, 0.5545, 0.5346, 0.5265, 0.5208, 0.5165, 0.5157, 0.5219",\
"0.8082, 0.7835, 0.7406, 0.7022, 0.6741, 0.6579, 0.6526, 0.6461, 0.6428, 0.6478",\
"1.011, 0.9825, 0.9301, 0.8861, 0.8506, 0.8262, 0.8128, 0.8086, 0.8051, 0.8137",\
"1.25, 1.219, 1.158, 1.105, 1.065, 1.032, 1.009, 0.9976, 1.001, 1.022");
}
}
internal_power() {
related_pin : "A2" ;
when : "A1" ;
fall_power(pwr_tin_oload_10x10) {
index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
index_2("0.001, 0.007781, 0.03158, 0.07704, 0.1479, 0.2472, 0.378, 0.5427, 0.7438, 0.9835");
values("0.5604, 0.5506, 0.5377, 0.5313, 0.5274, 0.5255, 0.524, 0.5232, 0.5227, 0.5226",\
"0.5575, 0.5476, 0.5347, 0.5285, 0.5246, 0.5226, 0.5212, 0.5204, 0.5199, 0.5197",\
"0.5606, 0.5501, 0.5367, 0.5306, 0.5271, 0.5249, 0.5242, 0.5231, 0.5226, 0.5224",\
"0.595, 0.5833, 0.5655, 0.5554, 0.5509, 0.5481, 0.5467, 0.5456, 0.545, 0.5444",\
"0.6749, 0.6591, 0.6324, 0.6153, 0.6059, 0.6007, 0.5972, 0.5951, 0.5938, 0.5931",\
"0.7938, 0.7744, 0.7377, 0.7115, 0.6957, 0.6866, 0.681, 0.677, 0.6747, 0.6731",\
"0.9541, 0.9306, 0.8842, 0.8479, 0.8242, 0.8093, 0.7994, 0.7932, 0.789, 0.7861",\
"1.155, 1.129, 1.072, 1.024, 0.9909, 0.9691, 0.955, 0.9456, 0.9394, 0.9347",\
"1.396, 1.367, 1.302, 1.242, 1.199, 1.17, 1.15, 1.136, 1.126, 1.12",\
"1.68, 1.649, 1.575, 1.504, 1.45, 1.411, 1.385, 1.367, 1.353, 1.344");
}
rise_power(pwr_tin_oload_10x10) {
index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
index_2("0.001, 0.007781, 0.03158, 0.07704, 0.1479, 0.2472, 0.378, 0.5427, 0.7438, 0.9835");
values("0.3208, 0.311, 0.3, 0.2946, 0.2936, 0.2957, 0.2994, 0.3005, 0.3054, 0.3128",\
"0.319, 0.3092, 0.2979, 0.2928, 0.292, 0.2934, 0.2967, 0.2987, 0.3031, 0.311",\
"0.3185, 0.3083, 0.2967, 0.2907, 0.2899, 0.2916, 0.2953, 0.2965, 0.3, 0.3092",\
"0.3424, 0.3311, 0.3159, 0.3079, 0.3052, 0.3065, 0.3079, 0.31, 0.3144, 0.3222",\
"0.3992, 0.386, 0.3658, 0.3538, 0.3464, 0.3452, 0.3457, 0.3482, 0.3517, 0.36",\
"0.4956, 0.4792, 0.4508, 0.4325, 0.4235, 0.4176, 0.4155, 0.4148, 0.4167, 0.4261",\
"0.6293, 0.6094, 0.5758, 0.5461, 0.5282, 0.5229, 0.5176, 0.5143, 0.5139, 0.5206",\
"0.8003, 0.7772, 0.7356, 0.7004, 0.6756, 0.6597, 0.6567, 0.6524, 0.651, 0.6537",\
"1.008, 0.9827, 0.9344, 0.8901, 0.8573, 0.8357, 0.8227, 0.8203, 0.819, 0.829",\
"1.256, 1.227, 1.171, 1.121, 1.081, 1.048, 1.029, 1.021, 1.022, 1.039");
}
}
timing() {
related_pin : "A1" ;
timing_sense : positive_unate ;
timing_type : combinational ;
cell_fall(tmg_ntin_oload_10x10) {
index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
index_2("0.001, 0.007781, 0.03158, 0.07704, 0.1479, 0.2472, 0.378, 0.5427, 0.7438, 0.9835");
values("0.2763, 0.309, 0.397, 0.5316, 0.7195, 0.975, 1.309, 1.73, 2.244, 2.856",\
"0.2886, 0.3214, 0.4095, 0.544, 0.7319, 0.9874, 1.322, 1.742, 2.256, 2.868",\
"0.3378, 0.3703, 0.4581, 0.5927, 0.7807, 1.036, 1.37, 1.791, 2.305, 2.917",\
"0.4357, 0.4685, 0.5565, 0.6912, 0.879, 1.134, 1.468, 1.889, 2.403, 3.016",\
"0.5577, 0.5931, 0.6852, 0.8233, 1.012, 1.267, 1.6, 2.02, 2.534, 3.147",\
"0.698, 0.7361, 0.8339, 0.9764, 1.168, 1.424, 1.757, 2.177, 2.69, 3.302",\
"0.8535, 0.8954, 1.001, 1.15, 1.347, 1.604, 1.937, 2.357, 2.869, 3.481",\
"1.026, 1.071, 1.185, 1.341, 1.546, 1.809, 2.143, 2.562, 3.075, 3.686",\
"1.212, 1.262, 1.384, 1.549, 1.762, 2.032, 2.373, 2.795, 3.307, 3.919",\
"1.417, 1.469, 1.6, 1.775, 1.996, 2.273, 2.623, 3.053, 3.569, 4.18");
}
cell_rise(tmg_ntin_oload_10x10) {
index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
index_2("0.001, 0.007781, 0.03158, 0.07704, 0.1479, 0.2472, 0.378, 0.5427, 0.7438, 0.9835");
values("0.3268, 0.3638, 0.4733, 0.6583, 0.9369, 1.326, 1.838, 2.484, 3.272, 4.213",\
"0.3337, 0.3709, 0.4803, 0.6654, 0.9438, 1.333, 1.845, 2.491, 3.278, 4.22",\
"0.3657, 0.4029, 0.512, 0.6967, 0.9752, 1.364, 1.877, 2.521, 3.311, 4.25",\
"0.4275, 0.4651, 0.5735, 0.7572, 1.034, 1.423, 1.935, 2.581, 3.37, 4.305",\
"0.4886, 0.5272, 0.6369, 0.8208, 1.098, 1.485, 1.997, 2.642, 3.43, 4.369",\
"0.5437, 0.5841, 0.6962, 0.8804, 1.156, 1.544, 2.053, 2.697, 3.486, 4.422",\
"0.5872, 0.6299, 0.7454, 0.9335, 1.209, 1.594, 2.104, 2.747, 3.534, 4.473",\
"0.6168, 0.6629, 0.7834, 0.975, 1.254, 1.641, 2.149, 2.792, 3.577, 4.513",\
"0.6308, 0.6795, 0.8053, 1.001, 1.285, 1.677, 2.188, 2.829, 3.614, 4.55",\
"0.6266, 0.679, 0.8115, 1.012, 1.3, 1.697, 2.215, 2.86, 3.644, 4.58");
}
fall_transition(tmg_ntin_oload_10x10) {
index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
index_2("0.001, 0.007781, 0.03158, 0.07704, 0.1479, 0.2472, 0.378, 0.5427, 0.7438, 0.9835");
values("0.097, 0.1317, 0.2332, 0.4126, 0.7001, 1.12, 1.683, 2.395, 3.264, 4.304",\
"0.09702, 0.1314, 0.2331, 0.4128, 0.7002, 1.119, 1.682, 2.394, 3.265, 4.303",\
"0.09726, 0.1318, 0.2335, 0.4126, 0.7008, 1.12, 1.68, 2.395, 3.262, 4.303",\
"0.1049, 0.1389, 0.2383, 0.4154, 0.7014, 1.12, 1.68, 2.394, 3.265, 4.299",\
"0.1242, 0.1578, 0.2556, 0.4284, 0.706, 1.121, 1.681, 2.393, 3.262, 4.302",\
"0.148, 0.1832, 0.2786, 0.4478, 0.7192, 1.127, 1.684, 2.393, 3.263, 4.303",\
"0.1748, 0.2136, 0.3098, 0.4764, 0.7408, 1.137, 1.688, 2.396, 3.263, 4.299",\
"0.2034, 0.245, 0.3462, 0.5112, 0.7726, 1.162, 1.7, 2.399, 3.263, 4.299",\
"0.2322, 0.2782, 0.385, 0.5502, 0.8108, 1.199, 1.731, 2.417, 3.27, 4.297",\
"0.2628, 0.3118, 0.4272, 0.5912, 0.8518, 1.241, 1.776, 2.457, 3.295, 4.313");
}
rise_transition(tmg_ntin_oload_10x10) {
index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
index_2("0.001, 0.007781, 0.03158, 0.07704, 0.1479, 0.2472, 0.378, 0.5427, 0.7438, 0.9835");
values("0.1175, 0.1643, 0.3222, 0.6237, 1.114, 1.81, 2.733, 3.895, 5.315, 6.992",\
"0.1181, 0.1641, 0.3217, 0.6232, 1.113, 1.811, 2.734, 3.888, 5.311, 6.994",\
"0.1174, 0.1643, 0.3223, 0.6237, 1.114, 1.813, 2.735, 3.889, 5.315, 7.006",\
"0.1221, 0.1684, 0.3257, 0.6248, 1.115, 1.812, 2.732, 3.89, 5.315, 6.994",\
"0.1328, 0.178, 0.3334, 0.6316, 1.117, 1.813, 2.732, 3.895, 5.31, 6.995",\
"0.1474, 0.1932, 0.345, 0.6382, 1.121, 1.817, 2.734, 3.895, 5.312, 6.99",\
"0.1664, 0.2134, 0.3618, 0.652, 1.127, 1.819, 2.737, 3.896, 5.312, 7.002",\
"0.1868, 0.2338, 0.3814, 0.6718, 1.147, 1.828, 2.741, 3.896, 5.306, 6.99",\
"0.2088, 0.2574, 0.4044, 0.6948, 1.17, 1.852, 2.755, 3.903, 5.31, 6.999",\
"0.2318, 0.2838, 0.4306, 0.719, 1.196, 1.886, 2.787, 3.923, 5.32, 6.997");
}
}
timing() {
related_pin : "A2" ;
timing_sense : positive_unate ;
timing_type : combinational ;
cell_fall(tmg_ntin_oload_10x10) {
index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
index_2("0.001, 0.007781, 0.03158, 0.07704, 0.1479, 0.2472, 0.378, 0.5427, 0.7438, 0.9835");
values("0.3057, 0.3401, 0.4307, 0.5668, 0.7555, 1.011, 1.345, 1.766, 2.28, 2.892",\
"0.3172, 0.3516, 0.4422, 0.5784, 0.7671, 1.023, 1.357, 1.778, 2.291, 2.904",\
"0.3675, 0.4018, 0.4923, 0.6283, 0.817, 1.073, 1.407, 1.828, 2.341, 2.953",\
"0.4713, 0.5055, 0.5955, 0.7315, 0.92, 1.176, 1.51, 1.93, 2.444, 3.057",\
"0.6081, 0.6446, 0.7388, 0.8776, 1.067, 1.322, 1.655, 2.075, 2.588, 3.202",\
"0.7691, 0.8086, 0.9084, 1.051, 1.243, 1.499, 1.832, 2.251, 2.765, 3.377",\
"0.9545, 0.9974, 1.105, 1.253, 1.449, 1.705, 2.038, 2.457, 2.97, 3.581",\
"1.164, 1.211, 1.326, 1.482, 1.684, 1.944, 2.277, 2.696, 3.208, 3.819",\
"1.399, 1.449, 1.573, 1.737, 1.947, 2.213, 2.55, 2.97, 3.482, 4.092",\
"1.66, 1.714, 1.846, 2.02, 2.237, 2.51, 2.855, 3.28, 3.794, 4.404");
}
cell_rise(tmg_ntin_oload_10x10) {
index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
index_2("0.001, 0.007781, 0.03158, 0.07704, 0.1479, 0.2472, 0.378, 0.5427, 0.7438, 0.9835");
values("0.3455, 0.3828, 0.4923, 0.6772, 0.9554, 1.345, 1.857, 2.501, 3.291, 4.232",\
"0.3526, 0.3898, 0.4991, 0.6841, 0.9625, 1.352, 1.864, 2.509, 3.296, 4.236",\
"0.3686, 0.4057, 0.5149, 0.6996, 0.9781, 1.367, 1.879, 2.524, 3.314, 4.254",\
"0.4007, 0.4385, 0.5475, 0.7319, 1.01, 1.398, 1.911, 2.556, 3.343, 4.285",\
"0.4346, 0.4736, 0.5845, 0.7692, 1.047, 1.434, 1.947, 2.591, 3.38, 4.319",\
"0.4593, 0.5005, 0.6146, 0.8015, 1.078, 1.465, 1.975, 2.62, 3.408, 4.344",\
"0.4668, 0.5105, 0.6291, 0.8203, 1.099, 1.486, 1.996, 2.638, 3.424, 4.363",\
"0.4536, 0.5, 0.6236, 0.8203, 1.105, 1.496, 2.005, 2.647, 3.432, 4.369",\
"0.4161, 0.4658, 0.5957, 0.7971, 1.088, 1.485, 2, 2.643, 3.428, 4.364",\
"0.3535, 0.4062, 0.5422, 0.7492, 1.045, 1.45, 1.973, 2.623, 3.41, 4.345");
}
fall_transition(tmg_ntin_oload_10x10) {
index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
index_2("0.001, 0.007781, 0.03158, 0.07704, 0.1479, 0.2472, 0.378, 0.5427, 0.7438, 0.9835");
values("0.1059, 0.1408, 0.2408, 0.4179, 0.7031, 1.121, 1.681, 2.395, 3.262, 4.303",\
"0.1058, 0.1407, 0.2409, 0.4179, 0.7031, 1.121, 1.683, 2.395, 3.262, 4.303",\
"0.1061, 0.1414, 0.2408, 0.4172, 0.7029, 1.121, 1.683, 2.395, 3.263, 4.302",\
"0.1108, 0.1454, 0.2442, 0.4196, 0.7038, 1.121, 1.683, 2.395, 3.265, 4.301",\
"0.13, 0.165, 0.2612, 0.43, 0.709, 1.122, 1.682, 2.392, 3.261, 4.3",\
"0.1524, 0.1896, 0.283, 0.449, 0.7196, 1.127, 1.684, 2.394, 3.264, 4.3",\
"0.1788, 0.2184, 0.313, 0.4744, 0.7374, 1.137, 1.688, 2.396, 3.264, 4.3",\
"0.206, 0.2502, 0.3474, 0.5072, 0.7664, 1.155, 1.697, 2.398, 3.263, 4.299",\
"0.2358, 0.2814, 0.3866, 0.5432, 0.802, 1.186, 1.719, 2.409, 3.269, 4.298",\
"0.2668, 0.3172, 0.429, 0.5854, 0.8406, 1.226, 1.76, 2.439, 3.284, 4.304");
}
rise_transition(tmg_ntin_oload_10x10) {
index_1("0.02, 0.06818, 0.2373, 0.5602, 1.063, 1.769, 2.698, 3.869, 5.297, 7");
index_2("0.001, 0.007781, 0.03158, 0.07704, 0.1479, 0.2472, 0.378, 0.5427, 0.7438, 0.9835");
values("0.1176, 0.1643, 0.3221, 0.6243, 1.114, 1.81, 2.732, 3.89, 5.307, 6.995",\
"0.1177, 0.1643, 0.3221, 0.6244, 1.113, 1.811, 2.734, 3.888, 5.307, 7.001",\
"0.1171, 0.164, 0.3228, 0.6234, 1.113, 1.809, 2.732, 3.888, 5.315, 6.991",\
"0.1223, 0.1681, 0.3242, 0.6253, 1.113, 1.813, 2.733, 3.889, 5.309, 7.008",\
"0.1314, 0.1774, 0.3332, 0.631, 1.117, 1.813, 2.73, 3.895, 5.312, 6.994",\
"0.146, 0.193, 0.3474, 0.6394, 1.12, 1.815, 2.734, 3.893, 5.311, 6.993",\
"0.1628, 0.211, 0.3652, 0.6592, 1.132, 1.817, 2.735, 3.895, 5.311, 6.987",\
"0.1826, 0.2318, 0.3856, 0.6818, 1.157, 1.835, 2.74, 3.891, 5.311, 7.002",\
"0.2026, 0.2534, 0.4088, 0.7056, 1.186, 1.868, 2.768, 3.904, 5.307, 6.998",\
"0.224, 0.278, 0.4318, 0.732, 1.214, 1.906, 2.81, 3.934, 5.324, 6.995");
}
}
}
}