/*
 * 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__nand2_4) {
    area : 35.123200 ;

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "!A1&!A2" ;
      value : "0.0002275776" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "!A1&A2" ;
      value : "0.0002325672" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "A1&!A2" ;
      value : "0.0002459322" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      when : "A1&A2" ;
      value : "0.000236682" ;
    }

    leakage_power() {
      related_pg_pin : "VDD" ;
      value : "0.0002459322" ;
    }

    pg_pin(VDD) {
      voltage_name : VDD ;
      pg_type : primary_power ;
    }

    pg_pin(VSS) {
      voltage_name : VSS ;
      pg_type : primary_ground ;
    }

    pin(A1) {
      capacitance : 0.01721 ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 25 ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

      internal_power() {
        when : "!A2" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("0.01471, 0.01471, 0.01464, 0.01463, 0.01461, 0.01462, 0.01461, \
                  0.01462, 0.01374, 0.01042");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("-0.01044, -0.01043, -0.01043, -0.01047, -0.01051, -0.01057, -0.01067, \
                  -0.01088, -0.01116, -0.01038");
        }
      }
    }

    pin(A2) {
      capacitance : 0.01742 ;
      direction : input ;
      driver_waveform_rise : driver_waveform_default_rise ;
      driver_waveform_fall : driver_waveform_default_fall ;
      input_voltage : default ;
      max_transition : 25 ;
      related_ground_pin : VSS ;
      related_power_pin : VDD ;

      internal_power() {
        when : "!A1" ;

        fall_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("0.01391, 0.01283, 0.01255, 0.01253, 0.01251, 0.0125, 0.0125, 0.01249, \
                  0.01171, 0.00874");
        }

        rise_power(pwr_tin_10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          values("-0.01255, -0.01254, -0.01251, -0.01252, -0.01249, -0.0125, -0.01248, \
                  -0.01248, -0.01206, -0.01046");
        }
      }
    }

    pin(ZN) {
      direction : output ;
      function : "((!A1)|(!A2))" ;
      max_capacitance : 0.7042 ;
      max_transition : 25 ;
      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.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.005854, 0.02289, 0.05543, 0.1061, 0.1772, 0.2708, 0.3887, 0.5326, 0.7042");
          values("0.005355, 0.005376, 0.005395, 0.00541, 0.005417, 0.005418, 0.005419, 0.005415, 0.005347, 0.004983",\
                 "0.004839, 0.004955, 0.005155, 0.005271, 0.005335, 0.00536, 0.005369, 0.005377, 0.005305, 0.004934",\
                 "0.00374, 0.004005, 0.004503, 0.004884, 0.00508, 0.005192, 0.005265, 0.005303, 0.00523, 0.004829",\
                 "0.002783, 0.003057, 0.003702, 0.004289, 0.004688, 0.00492, 0.005065, 0.005142, 0.005076, 0.0046",\
                 "0.002324, 0.002499, 0.003038, 0.003708, 0.004219, 0.004575, 0.004809, 0.004936, 0.004835, 0.004192",\
                 "0.002185, 0.002285, 0.002659, 0.003216, 0.003771, 0.004209, 0.00451, 0.004664, 0.004422, 0.003455",\
                 "0.002318, 0.002367, 0.00255, 0.002947, 0.003422, 0.00388, 0.00421, 0.004256, 0.003578, 0.00211",\
                 "0.002701, 0.002674, 0.002688, 0.002881, 0.00323, 0.003611, 0.003796, 0.003162, 0.001557, -0.0001545",\
                 "0.003614, 0.003515, 0.003364, 0.003338, 0.003505, 0.003408, 0.001874, -0.000273, -0.001869, -0.003",\
                 "0.005654, 0.005506, 0.005172, 0.004888, 0.002985, -0.0001793, -0.002117, -0.003291, -0.004024, -0.004499");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.005854, 0.02289, 0.05543, 0.1061, 0.1772, 0.2708, 0.3887, 0.5326, 0.7042");
          values("0.02943, 0.02952, 0.0297, 0.02978, 0.03002, 0.03026, 0.03112, 0.04484, 0.1274, 0.3239",\
                 "0.02845, 0.02889, 0.02962, 0.03012, 0.03026, 0.0308, 0.0318, 0.04637, 0.1309, 0.3291",\
                 "0.02652, 0.02701, 0.0281, 0.02912, 0.02973, 0.03028, 0.03159, 0.04855, 0.1418, 0.3451",\
                 "0.02567, 0.02593, 0.02673, 0.02789, 0.02893, 0.02965, 0.03159, 0.0546, 0.164, 0.3744",\
                 "0.02536, 0.02552, 0.02606, 0.02686, 0.02794, 0.02866, 0.03252, 0.06902, 0.2055, 0.4156",\
                 "0.02542, 0.02549, 0.02573, 0.0264, 0.02705, 0.02831, 0.03719, 0.1028, 0.2696, 0.4586",\
                 "0.0257, 0.02568, 0.02576, 0.02604, 0.02675, 0.0291, 0.05752, 0.1743, 0.341, 0.4763",\
                 "0.02617, 0.02614, 0.0261, 0.02604, 0.02697, 0.04379, 0.1333, 0.2612, 0.358, 0.4263",\
                 "0.02606, 0.02597, 0.0258, 0.02649, 0.05505, 0.1267, 0.1799, 0.2144, 0.2374, 0.2532",\
                 "0.02362, 0.02338, 0.02667, 0.04436, 0.05842, 0.06703, 0.07229, 0.07564, 0.07779, 0.07934");
        }
      }

      internal_power() {
        related_pin : "A2" ;
        when : "A1" ;

        fall_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.005854, 0.02289, 0.05543, 0.1061, 0.1772, 0.2708, 0.3887, 0.5326, 0.7042");
          values("0.005371, 0.005377, 0.005406, 0.00542, 0.005424, 0.005427, 0.005432, 0.005425, 0.005348, 0.004985",\
                 "0.004948, 0.005072, 0.005199, 0.005289, 0.005333, 0.005361, 0.005361, 0.005365, 0.00532, 0.00493",\
                 "0.00408, 0.004281, 0.004682, 0.004973, 0.005147, 0.005237, 0.005282, 0.005309, 0.005242, 0.004825",\
                 "0.003204, 0.003447, 0.004008, 0.004486, 0.004801, 0.005, 0.005118, 0.005186, 0.005116, 0.004633",\
                 "0.002668, 0.002868, 0.003366, 0.003959, 0.004408, 0.004709, 0.004904, 0.005012, 0.004903, 0.004259",\
                 "0.002358, 0.002513, 0.002934, 0.003475, 0.003992, 0.00437, 0.004639, 0.00477, 0.004532, 0.00359",\
                 "0.002213, 0.002328, 0.002654, 0.003128, 0.003614, 0.004047, 0.00435, 0.004408, 0.003788, 0.002376",\
                 "0.002195, 0.002264, 0.002531, 0.002911, 0.003333, 0.003736, 0.003974, 0.003525, 0.002058, 0.0003105",\
                 "0.002586, 0.002646, 0.002819, 0.003096, 0.003449, 0.003628, 0.002757, 0.0007752, -0.00102, -0.00232",\
                 "0.004068, 0.004083, 0.004164, 0.004325, 0.003632, 0.0008872, -0.001339, -0.002704, -0.003558, -0.004128");
        }

        rise_power(pwr_tin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.005854, 0.02289, 0.05543, 0.1061, 0.1772, 0.2708, 0.3887, 0.5326, 0.7042");
          values("0.04055, 0.04056, 0.04062, 0.04071, 0.04079, 0.0411, 0.04197, 0.05649, 0.1406, 0.3388",\
                 "0.03947, 0.03955, 0.03974, 0.03993, 0.04011, 0.04024, 0.04141, 0.05658, 0.1429, 0.3423",\
                 "0.03815, 0.03831, 0.03877, 0.03927, 0.03956, 0.03986, 0.04127, 0.05898, 0.1537, 0.3576",\
                 "0.0373, 0.03749, 0.0379, 0.03846, 0.03907, 0.03949, 0.04139, 0.06534, 0.177, 0.3867",\
                 "0.03696, 0.03702, 0.03736, 0.03784, 0.03837, 0.03907, 0.04277, 0.08047, 0.2186, 0.4274",\
                 "0.03687, 0.03689, 0.03714, 0.03752, 0.03797, 0.03874, 0.04792, 0.115, 0.2827, 0.4691",\
                 "0.03698, 0.03701, 0.03707, 0.03726, 0.03783, 0.03989, 0.0693, 0.188, 0.3524, 0.4844",\
                 "0.03724, 0.03719, 0.03721, 0.03726, 0.03795, 0.0561, 0.1474, 0.272, 0.365, 0.4299",\
                 "0.03675, 0.03671, 0.03657, 0.03753, 0.06872, 0.1373, 0.1857, 0.2167, 0.2379, 0.2528",\
                 "0.03382, 0.0335, 0.03721, 0.05054, 0.06021, 0.06701, 0.07147, 0.07442, 0.07643, 0.0778");
        }
      }

      timing() {
        related_pin : "A1" ;
        timing_sense : negative_unate ;
        timing_type : combinational ;

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.005854, 0.02289, 0.05543, 0.1061, 0.1772, 0.2708, 0.3887, 0.5326, 0.7042");
          values("0.3224, 0.3902, 0.6266, 1.078, 1.781, 2.764, 4.059, 5.695, 7.695, 10.07",\
                 "0.3762, 0.4453, 0.6831, 1.135, 1.839, 2.822, 4.118, 5.759, 7.744, 10.13",\
                 "0.5848, 0.6588, 0.9005, 1.354, 2.058, 3.044, 4.346, 5.981, 7.967, 10.34",\
                 "0.8538, 0.9694, 1.297, 1.779, 2.483, 3.471, 4.771, 6.397, 8.393, 10.78",\
                 "1.115, 1.278, 1.734, 2.377, 3.147, 4.136, 5.433, 7.066, 9.059, 11.44",\
                 "1.354, 1.572, 2.167, 3, 3.977, 5.067, 6.369, 8.002, 9.995, 12.38",\
                 "1.561, 1.836, 2.589, 3.627, 4.834, 6.16, 7.593, 9.237, 11.23, 13.61",\
                 "1.722, 2.059, 2.98, 4.244, 5.695, 7.28, 8.974, 10.77, 12.79, 15.16",\
                 "1.826, 2.234, 3.338, 4.841, 6.553, 8.411, 10.39, 12.47, 14.66, 17.06",\
                 "1.868, 2.346, 3.645, 5.405, 7.396, 9.543, 11.81, 14.19, 16.69, 19.29");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.005854, 0.02289, 0.05543, 0.1061, 0.1772, 0.2708, 0.3887, 0.5326, 0.7042");
          values("0.44, 0.5408, 0.8939, 1.562, 2.603, 4.065, 5.987, 8.421, 11.36, 14.91",\
                 "0.5075, 0.6135, 0.9746, 1.648, 2.696, 4.155, 6.079, 8.499, 11.46, 14.98",\
                 "0.77, 0.8766, 1.242, 1.925, 2.977, 4.441, 6.371, 8.796, 11.75, 15.29",\
                 "1.26, 1.395, 1.777, 2.462, 3.516, 4.984, 6.914, 9.34, 12.31, 15.83",\
                 "1.852, 2.047, 2.575, 3.312, 4.367, 5.841, 7.768, 10.2, 13.17, 16.68",\
                 "2.529, 2.789, 3.498, 4.452, 5.569, 7.041, 8.974, 11.4, 14.38, 17.89",\
                 "3.285, 3.619, 4.523, 5.737, 7.102, 8.631, 10.56, 13, 15.95, 19.48",\
                 "4.118, 4.53, 5.645, 7.142, 8.816, 10.59, 12.57, 15, 17.96, 21.49",\
                 "5.034, 5.525, 6.864, 8.657, 10.66, 12.78, 14.98, 17.45, 20.41, 23.95",\
                 "6.028, 6.607, 8.174, 10.28, 12.64, 15.12, 17.69, 20.34, 23.34, 26.87");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.005854, 0.02289, 0.05543, 0.1061, 0.1772, 0.2708, 0.3887, 0.5326, 0.7042");
          values("0.3816, 0.4951, 0.8934, 1.651, 2.834, 4.491, 6.676, 9.414, 12.78, 16.76",\
                 "0.3819, 0.496, 0.8946, 1.652, 2.836, 4.492, 6.675, 9.42, 12.76, 16.78",\
                 "0.4334, 0.5226, 0.8934, 1.653, 2.834, 4.493, 6.678, 9.426, 12.78, 16.78",\
                 "0.6754, 0.7764, 1.081, 1.687, 2.838, 4.493, 6.672, 9.426, 12.78, 16.79",\
                 "0.9752, 1.105, 1.492, 2.073, 2.96, 4.502, 6.681, 9.427, 12.78, 16.77",\
                 "1.319, 1.487, 1.964, 2.667, 3.544, 4.762, 6.713, 9.423, 12.78, 16.79",\
                 "1.717, 1.919, 2.495, 3.326, 4.357, 5.548, 7.14, 9.532, 12.79, 16.78",\
                 "2.154, 2.398, 3.08, 4.054, 5.238, 6.6, 8.134, 10.14, 12.99, 16.8",\
                 "2.64, 2.928, 3.728, 4.85, 6.196, 7.734, 9.456, 11.35, 13.8, 17.15",\
                 "3.148, 3.51, 4.422, 5.702, 7.224, 8.946, 10.86, 12.94, 15.25, 18.16");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.005854, 0.02289, 0.05543, 0.1061, 0.1772, 0.2708, 0.3887, 0.5326, 0.7042");
          values("0.5499, 0.7194, 1.309, 2.438, 4.192, 6.657, 9.902, 14, 18.95, 24.91",\
                 "0.5506, 0.7181, 1.31, 2.436, 4.197, 6.65, 9.906, 13.99, 18.96, 24.89",\
                 "0.5564, 0.7196, 1.308, 2.436, 4.194, 6.661, 9.905, 13.99, 18.99, 24.92",\
                 "0.7802, 0.8822, 1.337, 2.437, 4.191, 6.665, 9.909, 13.98, 18.98, 24.92",\
                 "1.145, 1.288, 1.684, 2.512, 4.199, 6.663, 9.901, 13.99, 18.99, 24.89",\
                 "1.564, 1.749, 2.265, 2.991, 4.314, 6.673, 9.902, 14, 18.99, 24.9",\
                 "2.027, 2.259, 2.901, 3.79, 4.898, 6.82, 9.932, 14.01, 18.97, 24.93",\
                 "2.528, 2.814, 3.598, 4.666, 5.912, 7.482, 10.11, 14.01, 18.99, 24.91",\
                 "3.066, 3.42, 4.346, 5.616, 7.08, 8.67, 10.84, 14.23, 19.04, 24.94",\
                 "3.636, 4.038, 5.142, 6.634, 8.312, 10.14, 12.14, 15.01, 19.27, 24.99");
        }
      }

      timing() {
        related_pin : "A2" ;
        timing_sense : negative_unate ;
        timing_type : combinational ;

        cell_fall(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.005854, 0.02289, 0.05543, 0.1061, 0.1772, 0.2708, 0.3887, 0.5326, 0.7042");
          values("0.3719, 0.4395, 0.6754, 1.127, 1.83, 2.815, 4.114, 5.748, 7.732, 10.12",\
                 "0.4402, 0.5086, 0.7463, 1.199, 1.899, 2.884, 4.18, 5.819, 7.814, 10.18",\
                 "0.6359, 0.7069, 0.9475, 1.401, 2.105, 3.091, 4.392, 6.018, 8.01, 10.39",\
                 "0.8988, 0.9935, 1.284, 1.76, 2.467, 3.456, 4.753, 6.387, 8.375, 10.76",\
                 "1.187, 1.313, 1.686, 2.261, 3.022, 4.015, 5.314, 6.952, 8.951, 11.32",\
                 "1.47, 1.64, 2.12, 2.823, 3.711, 4.79, 6.1, 7.739, 9.733, 12.12",\
                 "1.727, 1.946, 2.558, 3.424, 4.466, 5.69, 7.113, 8.773, 10.77, 13.15",\
                 "1.945, 2.221, 2.985, 4.039, 5.268, 6.661, 8.245, 10.04, 12.07, 14.46",\
                 "2.112, 2.453, 3.381, 4.65, 6.097, 7.694, 9.46, 11.42, 13.61, 16.04",\
                 "2.212, 2.624, 3.739, 5.235, 6.934, 8.761, 10.74, 12.89, 15.27, 17.87");
        }

        cell_rise(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.005854, 0.02289, 0.05543, 0.1061, 0.1772, 0.2708, 0.3887, 0.5326, 0.7042");
          values("0.5845, 0.6874, 1.043, 1.717, 2.761, 4.224, 6.148, 8.57, 11.53, 15.05",\
                 "0.6512, 0.755, 1.113, 1.788, 2.833, 4.296, 6.221, 8.643, 11.6, 15.12",\
                 "0.922, 1.027, 1.389, 2.068, 3.116, 4.581, 6.506, 8.928, 11.89, 15.41",\
                 "1.455, 1.567, 1.932, 2.613, 3.664, 5.13, 7.056, 9.481, 12.44, 15.96",\
                 "2.145, 2.305, 2.765, 3.469, 4.521, 5.99, 7.916, 10.34, 13.3, 16.82",\
                 "2.929, 3.144, 3.76, 4.641, 5.729, 7.197, 9.125, 11.55, 14.51, 18.04",\
                 "3.804, 4.076, 4.864, 5.984, 7.284, 8.792, 10.72, 13.15, 16.11, 19.63",\
                 "4.767, 5.103, 6.071, 7.447, 9.043, 10.76, 12.73, 15.16, 18.11, 21.64",\
                 "5.813, 6.218, 7.38, 9.029, 10.94, 13, 15.15, 17.61, 20.57, 24.09",\
                 "6.946, 7.42, 8.784, 10.72, 12.97, 15.38, 17.89, 20.51, 23.5, 27.03");
        }

        fall_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.005854, 0.02289, 0.05543, 0.1061, 0.1772, 0.2708, 0.3887, 0.5326, 0.7042");
          values("0.3816, 0.4954, 0.8941, 1.651, 2.835, 4.491, 6.675, 9.425, 12.79, 16.76",\
                 "0.3812, 0.4957, 0.8949, 1.652, 2.835, 4.493, 6.673, 9.434, 12.79, 16.76",\
                 "0.4048, 0.5072, 0.8922, 1.652, 2.831, 4.491, 6.675, 9.427, 12.78, 16.77",\
                 "0.5432, 0.6518, 1.007, 1.677, 2.835, 4.492, 6.669, 9.418, 12.78, 16.75",\
                 "0.7446, 0.8662, 1.25, 1.921, 2.933, 4.498, 6.679, 9.418, 12.78, 16.78",\
                 "1.012, 1.153, 1.578, 2.281, 3.304, 4.703, 6.72, 9.424, 12.79, 16.79",\
                 "1.33, 1.5, 1.983, 2.734, 3.799, 5.214, 7.04, 9.542, 12.8, 16.77",\
                 "1.698, 1.897, 2.462, 3.286, 4.388, 5.848, 7.694, 9.986, 13, 16.81",\
                 "2.124, 2.356, 2.992, 3.922, 5.088, 6.592, 8.496, 10.79, 13.58, 17.14",\
                 "2.604, 2.868, 3.586, 4.626, 5.908, 7.446, 9.384, 11.75, 14.55, 17.88");
        }

        rise_transition(tmg_ntin_oload_10x10) {
          index_1("0.02, 0.1924, 0.7976, 1.953, 3.754, 6.28, 9.605, 13.79, 18.91, 25");
          index_2("0.001, 0.005854, 0.02289, 0.05543, 0.1061, 0.1772, 0.2708, 0.3887, 0.5326, 0.7042");
          values("0.6675, 0.8365, 1.428, 2.558, 4.314, 6.782, 10.02, 14.12, 19.11, 25.05",\
                 "0.6681, 0.8363, 1.428, 2.555, 4.314, 6.783, 10.02, 14.11, 19.11, 25.05",\
                 "0.6666, 0.8358, 1.428, 2.558, 4.314, 6.785, 10.03, 14.11, 19.1, 25.05",\
                 "0.775, 0.9034, 1.436, 2.556, 4.315, 6.785, 10.03, 14.12, 19.1, 25.05",\
                 "1.117, 1.26, 1.678, 2.598, 4.318, 6.78, 10.03, 14.11, 19.1, 25.04",\
                 "1.511, 1.698, 2.227, 2.993, 4.397, 6.786, 10.02, 14.12, 19.11, 25.06",\
                 "1.944, 2.191, 2.847, 3.764, 4.92, 6.914, 10.04, 14.12, 19.1, 25.05",\
                 "2.43, 2.72, 3.522, 4.626, 5.884, 7.516, 10.2, 14.13, 19.11, 25.05",\
                 "2.94, 3.292, 4.252, 5.55, 7.036, 8.646, 10.87, 14.33, 19.13, 25.04",\
                 "3.488, 3.904, 5.03, 6.546, 8.262, 10.12, 12.14, 15.06, 19.36, 25.09");
        }
      }
    }
  }

