801 lines
No EOL
65 KiB
JSON
801 lines
No EOL
65 KiB
JSON
{
|
|
"version": "1.0.1",
|
|
"codeEdition": "IBC 2018",
|
|
"jurisdiction": "Generic (International Building Code)",
|
|
"lastUpdated": "2025-05-09",
|
|
"tables": {
|
|
"constructionTypes": {
|
|
"source": "IBC 2018 Chapter 6, Section 602",
|
|
"description": "Definitions and general properties of building construction types.",
|
|
"lookupKeys": ["constructionTypeCode"],
|
|
"data": {
|
|
"IA": {
|
|
"description": "Fire-Resistive Non-Combustible",
|
|
"combustible": false,
|
|
"fireResistanceRating": "High",
|
|
"typicalMaterials": "Protected steel, concrete, masonry (noncombustible materials)"
|
|
},
|
|
"IB": {
|
|
"description": "Fire-Resistive Non-Combustible",
|
|
"combustible": false,
|
|
"fireResistanceRating": "High",
|
|
"typicalMaterials": "Protected steel, concrete, masonry (noncombustible materials)"
|
|
},
|
|
"IIA": {
|
|
"description": "Non-Combustible (1-hour rated)",
|
|
"combustible": false,
|
|
"fireResistanceRating": "Moderate",
|
|
"typicalMaterials": "Steel, concrete, masonry (noncombustible materials, 1-hour fire-resistance rating for specific elements)"
|
|
},
|
|
"IIB": {
|
|
"description": "Non-Combustible (Unprotected)",
|
|
"combustible": false,
|
|
"fireResistanceRating": "Low/None",
|
|
"typicalMaterials": "Unprotected steel, concrete, masonry (noncombustible materials)"
|
|
},
|
|
"IIIA": {
|
|
"description": "Ordinary (Combustible exterior walls fire-rated)",
|
|
"combustible": true,
|
|
"fireResistanceRating": "Moderate",
|
|
"typicalMaterials": "Fire-retardant-treated wood (exterior walls), ordinary wood framing (interior)"
|
|
},
|
|
"IIIB": {
|
|
"description": "Ordinary (Unprotected combustible construction)",
|
|
"combustible": true,
|
|
"fireResistanceRating": "Low/None",
|
|
"typicalMaterials": "Ordinary wood framing"
|
|
},
|
|
"IV": {
|
|
"description": "Heavy Timber (HT)",
|
|
"combustible": true,
|
|
"fireResistanceRating": "Moderate (inherent due to member sizes)",
|
|
"typicalMaterials": "Heavy timber (solid or laminated wood members of specified minimum sizes per IBC 2304.11). Cross-Laminated Timber (CLT) permitted within Type IV if meeting Section 2303.1.4 requirements."
|
|
},
|
|
"VA": {
|
|
"description": "Wood-Framed (1-hour rated)",
|
|
"combustible": true,
|
|
"fireResistanceRating": "Low",
|
|
"typicalMaterials": "Light wood framing (structural elements are 1-hour fire-resistance rated or of materials providing 1-hour rating)"
|
|
},
|
|
"VB": {
|
|
"description": "Wood-Framed (Unprotected)",
|
|
"combustible": true,
|
|
"fireResistanceRating": "None",
|
|
"typicalMaterials": "Light wood framing (no fire-resistance rating required for structural elements)"
|
|
}
|
|
}
|
|
},
|
|
"occupancyClassifications": {
|
|
"source": "IBC 2018 Chapter 3",
|
|
"description": "Occupancy classifications and their subgroups.",
|
|
"lookupKeys": ["occupancyGroupCode"],
|
|
"data": {
|
|
"A": {
|
|
"description": "Assembly",
|
|
"subgroups": {
|
|
"A-1": "Assembly uses, usually with fixed seating, intended for the production and viewing of performing arts or motion pictures (e.g., theaters, concert halls).",
|
|
"A-2": "Assembly uses intended for food and/or drink consumption not classified as A-3 (e.g., restaurants, banquet halls, nightclubs).",
|
|
"A-3": "Assembly uses intended for worship, recreation or amusement and other assembly uses not classified elsewhere (e.g., churches, museums, libraries, gyms without spectator seating).",
|
|
"A-4": "Assembly uses intended for viewing of indoor sporting events and activities with spectator seating (e.g., arenas, skating rinks).",
|
|
"A-5": "Assembly uses intended for participation in or viewing outdoor activities (e.g., stadiums, amusement park structures)."
|
|
}
|
|
},
|
|
"B": {
|
|
"description": "Business",
|
|
"subgroups": {
|
|
"B": "Office, professional or service-type transactions, including storage of records and accounts (e.g., offices, banks, clinics, post offices, print shops)."
|
|
}
|
|
},
|
|
"E": {
|
|
"description": "Educational",
|
|
"subgroups": {
|
|
"E": "Used by six or more persons at any one time for educational purposes through the 12th grade."
|
|
}
|
|
},
|
|
"F": {
|
|
"description": "Factory Industrial",
|
|
"subgroups": {
|
|
"F-1": "Moderate-hazard factory industrial (e.g., manufacturing, assembling, fabricating, finishing, packaging of moderate hazard materials).",
|
|
"F-2": "Low-hazard factory industrial (e.g., manufacturing, assembling, etc., of noncombustible materials that do not involve significant fire hazard)."
|
|
}
|
|
},
|
|
"H": {
|
|
"description": "High Hazard",
|
|
"subgroups": {
|
|
"H-1": "Buildings containing materials with a detonation hazard.",
|
|
"H-2": "Buildings containing materials that have a deflagration hazard or a hazard from accelerated burning.",
|
|
"H-3": "Buildings containing materials that readily support combustion or pose a physical hazard.",
|
|
"H-4": "Buildings containing materials that are health hazards.",
|
|
"H-5": "Semiconductor fabrication facilities and comparable research and development areas."
|
|
}
|
|
},
|
|
"I": {
|
|
"description": "Institutional",
|
|
"subgroups": {
|
|
"I-1": "Housing more than 16 persons, on a 24-hour basis, who because of age, mental disability or other reasons, live in a supervised residential environment that provides personal care services (e.g., assisted living, halfway houses).",
|
|
"I-2": "Used for medical care on a 24-hour basis for more than five persons who are incapable of self-preservation (e.g., hospitals, nursing homes).",
|
|
"I-3": "Inhabited by more than five persons who are under restraint or security (e.g., prisons, jails, detention centers).",
|
|
"I-4": "Day care facilities (adults or children) for more than five persons who are not capable of self-preservation."
|
|
}
|
|
},
|
|
"M": {
|
|
"description": "Mercantile",
|
|
"subgroups": {
|
|
"M": "Display and sale of merchandise, and involving stocks of goods, wares or merchandise incidental to such purposes (e.g., retail stores, shops, markets)."
|
|
}
|
|
},
|
|
"R": {
|
|
"description": "Residential",
|
|
"subgroups": {
|
|
"R-1": "Residential occupancies containing sleeping units where the occupants are primarily transient in nature (e.g., hotels, motels).",
|
|
"R-2": "Residential occupancies containing sleeping units or more than two dwelling units where the occupants are primarily permanent in nature (e.g., apartments, dormitories, fraternities).",
|
|
"R-3": "Residential occupancies where the occupants are primarily permanent in nature and not classified as R-1, R-2, R-4 or I, and where buildings do not contain more than two dwelling units, or adult and child care facilities that provide accommodations for five or fewer persons of any age for less than 24 hours.",
|
|
"R-4": "Residential care/assisted living facilities including more than five but not more than 16 occupants, excluding staff."
|
|
}
|
|
},
|
|
"S": {
|
|
"description": "Storage",
|
|
"subgroups": {
|
|
"S-1": "Moderate-hazard storage (e.g., storage of combustible materials but not highly hazardous).",
|
|
"S-2": "Low-hazard storage (e.g., storage of noncombustible materials)."
|
|
}
|
|
},
|
|
"U": {
|
|
"description": "Utility and Miscellaneous",
|
|
"subgroups": {
|
|
"U": "Buildings and structures of an accessory character and miscellaneous structures not classified in any specific occupancy (e.g., agricultural buildings, barns, carports, private garages, sheds, stables, tanks, towers)."
|
|
}
|
|
}
|
|
}
|
|
},
|
|
"allowableBuildingHeightsAreas": {
|
|
"source": "IBC 2018 Tables 504.3, 504.4, 506.2",
|
|
"description": "Allowable building heights (in feet and stories) and areas (sq ft per story) based on construction type and occupancy group for NON-SPRINKLERED buildings. Includes sprinkler and frontage increase considerations.",
|
|
"lookupKeys": ["constructionType", "occupancyGroup"],
|
|
"data": {
|
|
"IA": {
|
|
"A-1": { "base": { "height_ft": "NL", "height_stories": "NL", "area_sqft_per_story": "NL" }, "sprinkler_increase": { "area_multiplier": 1, "height_ft": 0, "stories": 0, "notes": "Already NL. Height increase not applicable if already NL."}, "frontage_increase": { "max_percentage": 75 } },
|
|
"A-2": { "base": { "height_ft": "NL", "height_stories": "NL", "area_sqft_per_story": "NL" }, "sprinkler_increase": { "area_multiplier": 1, "height_ft": 0, "stories": 0, "notes": "Already NL. Height increase not applicable if already NL."}, "frontage_increase": { "max_percentage": 75 } },
|
|
"A-3": { "base": { "height_ft": "NL", "height_stories": "NL", "area_sqft_per_story": "NL" }, "sprinkler_increase": { "area_multiplier": 1, "height_ft": 0, "stories": 0, "notes": "Already NL. Height increase not applicable if already NL."}, "frontage_increase": { "max_percentage": 75 } },
|
|
"B": { "base": { "height_ft": "NL", "height_stories": "NL", "area_sqft_per_story": "NL" }, "sprinkler_increase": { "area_multiplier": 1, "height_ft": 0, "stories": 0, "notes": "Already NL. Height increase not applicable if already NL."}, "frontage_increase": { "max_percentage": 75 } },
|
|
"E": { "base": { "height_ft": "NL", "height_stories": "NL", "area_sqft_per_story": "NL" }, "sprinkler_increase": { "area_multiplier": 1, "height_ft": 0, "stories": 0, "notes": "Already NL. Height increase not applicable if already NL."}, "frontage_increase": { "max_percentage": 75 } },
|
|
"F-1": { "base": { "height_ft": "NL", "height_stories": "NL", "area_sqft_per_story": "NL" }, "sprinkler_increase": { "area_multiplier": 1, "height_ft": 0, "stories": 0, "notes": "Already NL. Height increase not applicable if already NL."}, "frontage_increase": { "max_percentage": 75 } },
|
|
"I-1": { "base": { "height_ft": "NL", "height_stories": "NL", "area_sqft_per_story": "NL" }, "sprinkler_increase": { "area_multiplier": 1, "height_ft": 0, "stories": 0, "notes": "Already NL. Height increase not applicable if already NL."}, "frontage_increase": { "max_percentage": 75 } },
|
|
"I-2": { "base": { "height_ft": "NL", "height_stories": "NL", "area_sqft_per_story": "NL" }, "sprinkler_increase": { "area_multiplier": 1, "height_ft": 0, "stories": 0, "notes": "Already NL. Height increase not applicable if already NL."}, "frontage_increase": { "max_percentage": 75 } },
|
|
"M": { "base": { "height_ft": "NL", "height_stories": "NL", "area_sqft_per_story": "NL" }, "sprinkler_increase": { "area_multiplier": 1, "height_ft": 0, "stories": 0, "notes": "Already NL. Height increase not applicable if already NL."}, "frontage_increase": { "max_percentage": 75 } },
|
|
"R-1": { "base": { "height_ft": "NL", "height_stories": "NL", "area_sqft_per_story": "NL" }, "sprinkler_increase": { "area_multiplier": 1, "height_ft": 0, "stories": 0, "notes": "Already NL. Height increase not applicable if already NL."}, "frontage_increase": { "max_percentage": 75 } },
|
|
"R-2": { "base": { "height_ft": "NL", "height_stories": "NL", "area_sqft_per_story": "NL" }, "sprinkler_increase": { "area_multiplier": 1, "height_ft": 0, "stories": 0, "notes": "Already NL. Height increase not applicable if already NL."}, "frontage_increase": { "max_percentage": 75 } },
|
|
"S-1": { "base": { "height_ft": "NL", "height_stories": "NL", "area_sqft_per_story": "NL" }, "sprinkler_increase": { "area_multiplier": 1, "height_ft": 0, "stories": 0, "notes": "Already NL. Height increase not applicable if already NL."}, "frontage_increase": { "max_percentage": 75 } },
|
|
"S-2": { "base": { "height_ft": "NL", "height_stories": "NL", "area_sqft_per_story": "NL" }, "sprinkler_increase": { "area_multiplier": 1, "height_ft": 0, "stories": 0, "notes": "Already NL. Height increase not applicable if already NL."}, "frontage_increase": { "max_percentage": 75 } }
|
|
},
|
|
"IB": {
|
|
"A-1": { "base": { "height_ft": 160, "height_stories": 11, "area_sqft_per_story": 19000 }, "sprinkler_increase": { "area_multiplier": 3, "height_ft": 20, "stories": 1, "notes": "Multiplier SM/NS from Table 506.2 (57000/19000=3)"}, "frontage_increase": { "max_percentage": 75 } },
|
|
"A-2": { "base": { "height_ft": 160, "height_stories": 11, "area_sqft_per_story": 19000 }, "sprinkler_increase": { "area_multiplier": 3, "height_ft": 20, "stories": 1, "notes": "Multiplier SM/NS from Table 506.2 (57000/19000=3)"}, "frontage_increase": { "max_percentage": 75 } },
|
|
"A-3": { "base": { "height_ft": 160, "height_stories": 11, "area_sqft_per_story": 19000 }, "sprinkler_increase": { "area_multiplier": 3, "height_ft": 20, "stories": 1, "notes": "Multiplier SM/NS from Table 506.2 (57000/19000=3)"}, "frontage_increase": { "max_percentage": 75 } },
|
|
"B": { "base": { "height_ft": 160, "height_stories": 11, "area_sqft_per_story": 30500 }, "sprinkler_increase": { "area_multiplier": 3, "height_ft": 20, "stories": 1, "notes": "Multiplier SM/NS from Table 506.2 (91500/30500=3)"}, "frontage_increase": { "max_percentage": 75 } },
|
|
"E": { "base": { "height_ft": 160, "height_stories": 11, "area_sqft_per_story": 38000 }, "sprinkler_increase": { "area_multiplier": 2, "height_ft": 20, "stories": 1, "notes": "Multiplier SM/NS from Table 506.2 (76000/38000=2)"}, "frontage_increase": { "max_percentage": 75 } },
|
|
"F-1": { "base": { "height_ft": 160, "height_stories": 11, "area_sqft_per_story": 23000 }, "sprinkler_increase": { "area_multiplier": 3, "height_ft": 20, "stories": 1, "notes": "Multiplier SM/NS from Table 506.2 (69000/23000=3)"}, "frontage_increase": { "max_percentage": 75 } },
|
|
"I-1": { "base": { "height_ft": 160, "height_stories": 11, "area_sqft_per_story": 19000 }, "sprinkler_increase": { "area_multiplier": 2, "height_ft": 20, "stories": 1, "notes": "Multiplier SM/NS from Table 506.2 (38000/19000=2)"}, "frontage_increase": { "max_percentage": 75 } },
|
|
"I-2": { "base": { "height_ft": 160, "height_stories": 11, "area_sqft_per_story": 15000 }, "sprinkler_increase": { "area_multiplier": 2, "height_ft": 20, "stories": 1, "notes": "Multiplier SM/NS from Table 506.2 (30000/15000=2)"}, "frontage_increase": { "max_percentage": 75 } },
|
|
"M": { "base": { "height_ft": 160, "height_stories": 11, "area_sqft_per_story": 28500 }, "sprinkler_increase": { "area_multiplier": 3, "height_ft": 20, "stories": 1, "notes": "Multiplier SM/NS from Table 506.2 (85500/28500=3)"}, "frontage_increase": { "max_percentage": 75 } },
|
|
"R-1": { "base": { "height_ft": 160, "height_stories": 11, "area_sqft_per_story": 19000 }, "sprinkler_increase": { "area_multiplier": 3, "height_ft": 20, "stories": 1, "notes": "Multiplier SM/NS (NFPA 13) from Table 506.2 (57000/19000=3)"}, "frontage_increase": { "max_percentage": 75 } },
|
|
"R-2": { "base": { "height_ft": 160, "height_stories": 11, "area_sqft_per_story": 19000 }, "sprinkler_increase": { "area_multiplier": 3, "height_ft": 20, "stories": 1, "notes": "Multiplier SM/NS (NFPA 13) from Table 506.2 (57000/19000=3)"}, "frontage_increase": { "max_percentage": 75 } },
|
|
"S-1": { "base": { "height_ft": 160, "height_stories": 11, "area_sqft_per_story": 26500 }, "sprinkler_increase": { "area_multiplier": 3, "height_ft": 20, "stories": 1, "notes": "Multiplier SM/NS from Table 506.2 (79500/26500=3)"}, "frontage_increase": { "max_percentage": 75 } },
|
|
"S-2": { "base": { "height_ft": 160, "height_stories": 11, "area_sqft_per_story": 38000 }, "sprinkler_increase": { "area_multiplier": 3, "height_ft": 20, "stories": 1, "notes": "Multiplier SM/NS from Table 506.2 (114000/38000=3)"}, "frontage_increase": { "max_percentage": 75 } }
|
|
},
|
|
"IIA": {
|
|
"A-1": { "base": { "height_ft": 65, "height_stories": 4, "area_sqft_per_story": 14000 }, "sprinkler_increase": { "area_multiplier": 3, "height_ft": 20, "stories": 1, "notes": "SM/NS (42000/14000=3)"}, "frontage_increase": { "max_percentage": 75 } },
|
|
"A-2": { "base": { "height_ft": 65, "height_stories": 4, "area_sqft_per_story": 14000 }, "sprinkler_increase": { "area_multiplier": 3, "height_ft": 20, "stories": 1, "notes": "SM/NS (42000/14000=3)"}, "frontage_increase": { "max_percentage": 75 } },
|
|
"B": { "base": { "height_ft": 65, "height_stories": 5, "area_sqft_per_story": 23500 }, "sprinkler_increase": { "area_multiplier": 3, "height_ft": 20, "stories": 1, "notes": "SM/NS (70500/23500=3)"}, "frontage_increase": { "max_percentage": 75 } },
|
|
"E": { "base": { "height_ft": 65, "height_stories": 4, "area_sqft_per_story": 26500 }, "sprinkler_increase": { "area_multiplier": 2, "height_ft": 20, "stories": 1, "notes": "SM/NS (53000/26500=2)"}, "frontage_increase": { "max_percentage": 75 } },
|
|
"F-1": { "base": { "height_ft": 65, "height_stories": 5, "area_sqft_per_story": 18500 }, "sprinkler_increase": { "area_multiplier": 3, "height_ft": 20, "stories": 1, "notes": "SM/NS (55500/18500=3)"}, "frontage_increase": { "max_percentage": 75 } },
|
|
"M": { "base": { "height_ft": 65, "height_stories": 5, "area_sqft_per_story": 22000 }, "sprinkler_increase": { "area_multiplier": 3, "height_ft": 20, "stories": 1, "notes": "SM/NS (66000/22000=3)"}, "frontage_increase": { "max_percentage": 75 } },
|
|
"R-1": { "base": { "height_ft": 65, "height_stories": 4, "area_sqft_per_story": 14000 }, "sprinkler_increase": { "area_multiplier": 3, "height_ft": 20, "stories": 1, "notes": "SM/NS (NFPA 13) (42000/14000=3)"}, "frontage_increase": { "max_percentage": 75 } },
|
|
"R-2": { "base": { "height_ft": 65, "height_stories": 4, "area_sqft_per_story": 14000 }, "sprinkler_increase": { "area_multiplier": 3, "height_ft": 20, "stories": 1, "notes": "SM/NS (NFPA 13) (42000/14000=3)"}, "frontage_increase": { "max_percentage": 75 } }
|
|
},
|
|
"IIB": {
|
|
"A-1": { "base": { "height_ft": 55, "height_stories": 2, "area_sqft_per_story": 9500 }, "sprinkler_increase": { "area_multiplier": 3, "height_ft": 20, "stories": 1, "notes": "SM/NS (28500/9500=3)"}, "frontage_increase": { "max_percentage": 75 } },
|
|
"B": { "base": { "height_ft": 55, "height_stories": 3, "area_sqft_per_story": 16000 }, "sprinkler_increase": { "area_multiplier": 3, "height_ft": 20, "stories": 1, "notes": "SM/NS (48000/16000=3)"}, "frontage_increase": { "max_percentage": 75 } },
|
|
"E": { "base": { "height_ft": 55, "height_stories": 2, "area_sqft_per_story": 18500 }, "sprinkler_increase": { "area_multiplier": 2, "height_ft": 20, "stories": 1, "notes": "SM/NS (37000/18500=2)"}, "frontage_increase": { "max_percentage": 75 } },
|
|
"F-1": { "base": { "height_ft": 55, "height_stories": 3, "area_sqft_per_story": 12500 }, "sprinkler_increase": { "area_multiplier": 3, "height_ft": 20, "stories": 1, "notes": "SM/NS (37500/12500=3)"}, "frontage_increase": { "max_percentage": 75 } },
|
|
"M": { "base": { "height_ft": 55, "height_stories": 3, "area_sqft_per_story": 15000 }, "sprinkler_increase": { "area_multiplier": 3, "height_ft": 20, "stories": 1, "notes": "SM/NS (45000/15000=3)"}, "frontage_increase": { "max_percentage": 75 } },
|
|
"R-2": { "base": { "height_ft": 55, "height_stories": 3, "area_sqft_per_story": 9500 }, "sprinkler_increase": { "area_multiplier": 3, "height_ft": 20, "stories": 1, "notes": "SM/NS (NFPA 13) (28500/9500=3)"}, "frontage_increase": { "max_percentage": 75 } }
|
|
},
|
|
"IIIA": {
|
|
"A-1": { "base": { "height_ft": 65, "height_stories": 4, "area_sqft_per_story": 11500 }, "sprinkler_increase": { "area_multiplier": 3, "height_ft": 20, "stories": 1, "notes": "SM/NS (34500/11500=3)"}, "frontage_increase": { "max_percentage": 75 } },
|
|
"B": { "base": { "height_ft": 65, "height_stories": 5, "area_sqft_per_story": 14000 }, "sprinkler_increase": { "area_multiplier": 3, "height_ft": 20, "stories": 1, "notes": "SM/NS (42000/14000=3)"}, "frontage_increase": { "max_percentage": 75 } },
|
|
"E": { "base": { "height_ft": 65, "height_stories": 4, "area_sqft_per_story": 18500 }, "sprinkler_increase": { "area_multiplier": 2, "height_ft": 20, "stories": 1, "notes": "SM/NS (37000/18500=2)"}, "frontage_increase": { "max_percentage": 75 } },
|
|
"R-2": { "base": { "height_ft": 65, "height_stories": 4, "area_sqft_per_story": 10000 }, "sprinkler_increase": { "area_multiplier": 3, "height_ft": 20, "stories": 1, "notes": "SM/NS (NFPA 13) (30000/10000=3)"}, "frontage_increase": { "max_percentage": 75 } }
|
|
},
|
|
"IIIB": {
|
|
"A-2": { "base": { "height_ft": 55, "height_stories": 2, "area_sqft_per_story": 7000 }, "sprinkler_increase": { "area_multiplier": 3, "height_ft": 20, "stories": 1, "notes": "SM/NS (21000/7000=3). Max area 12,000 per Table 506.2 footnote d (NFPA 13R)."}, "frontage_increase": { "max_percentage": 75 } },
|
|
"B": { "base": { "height_ft": 55, "height_stories": 3, "area_sqft_per_story": 9500 }, "sprinkler_increase": { "area_multiplier": 3, "height_ft": 20, "stories": 1, "notes": "SM/NS (28500/9500=3)"}, "frontage_increase": { "max_percentage": 75 } },
|
|
"E": { "base": { "height_ft": 55, "height_stories": 2, "area_sqft_per_story": 12000 }, "sprinkler_increase": { "area_multiplier": 2, "height_ft": 20, "stories": 1, "notes": "SM/NS (24000/12000=2)"}, "frontage_increase": { "max_percentage": 75 } },
|
|
"R-2": { "base": { "height_ft": 55, "height_stories": 3, "area_sqft_per_story": 7000 }, "sprinkler_increase": { "area_multiplier": 3, "height_ft": 20, "stories": 1, "notes": "SM/NS (NFPA 13) (21000/7000=3)"}, "frontage_increase": { "max_percentage": 75 } }
|
|
},
|
|
"IV": {
|
|
"A-1": { "base": { "height_ft": 65, "height_stories": 4, "area_sqft_per_story": 14000 }, "sprinkler_increase": { "area_multiplier": 3, "height_ft": 20, "stories": 1, "notes": "SM/NS (42000/14000=3)"}, "frontage_increase": { "max_percentage": 75 } },
|
|
"B": { "base": { "height_ft": 65, "height_stories": 5, "area_sqft_per_story": 18000 }, "sprinkler_increase": { "area_multiplier": 2, "height_ft": 20, "stories": 1, "notes": "SM/NS (36000/18000=2)"}, "frontage_increase": { "max_percentage": 75 } },
|
|
"E": { "base": { "height_ft": 65, "height_stories": 4, "area_sqft_per_story": 21000 }, "sprinkler_increase": { "area_multiplier": 2, "height_ft": 20, "stories": 1, "notes": "SM/NS (42000/21000=2)"}, "frontage_increase": { "max_percentage": 75 } },
|
|
"R-2": { "base": { "height_ft": 65, "height_stories": 4, "area_sqft_per_story": 12000 }, "sprinkler_increase": { "area_multiplier": 2, "height_ft": 20, "stories": 1, "notes": "SM/NS (NFPA 13) (24000/12000=2)"}, "frontage_increase": { "max_percentage": 75 } }
|
|
},
|
|
"VA": {
|
|
"A-2": { "base": { "height_ft": 50, "height_stories": 1, "area_sqft_per_story": 6000 }, "sprinkler_increase": { "area_multiplier": 4, "height_ft": 20, "stories": 1, "notes": "S1/NS (24000/6000=4). Max area 12,000 per Table 506.2 footnote d (NFPA 13R)."}, "frontage_increase": { "max_percentage": 75 } },
|
|
"B": { "base": { "height_ft": 50, "height_stories": 3, "area_sqft_per_story": 9000 }, "sprinkler_increase": { "area_multiplier": 3, "height_ft": 20, "stories": 1, "notes": "SM/NS (27000/9000=3)"}, "frontage_increase": { "max_percentage": 75 } },
|
|
"E": { "base": { "height_ft": 50, "height_stories": 2, "area_sqft_per_story": 14000 }, "sprinkler_increase": { "area_multiplier": 2, "height_ft": 20, "stories": 1, "notes": "SM/NS (28000/14000=2)"}, "frontage_increase": { "max_percentage": 75 } },
|
|
"R-2": { "base": { "height_ft": 50, "height_stories": 3, "area_sqft_per_story": 8000 }, "sprinkler_increase": { "area_multiplier": 3, "height_ft": 20, "stories": 1, "notes": "SM/NS (NFPA 13) (24000/8000=3)"}, "frontage_increase": { "max_percentage": 75 } }
|
|
},
|
|
"VB": {
|
|
"A-2": { "base": { "height_ft": 40, "height_stories": 1, "area_sqft_per_story": 4500 }, "sprinkler_increase": { "area_multiplier": 4, "height_ft": 20, "stories": 1, "notes": "S1/NS (18000/4500=4). Max area 9,000 per Table 506.2 footnote d (NFPA 13R)."}, "frontage_increase": { "max_percentage": 75 } },
|
|
"B": { "base": { "height_ft": 40, "height_stories": 2, "area_sqft_per_story": 6000 }, "sprinkler_increase": { "area_multiplier": 3, "height_ft": 20, "stories": 1, "notes": "SM/NS (18000/6000=3)"}, "frontage_increase": { "max_percentage": 75 } },
|
|
"E": { "base": { "height_ft": 40, "height_stories": 1, "area_sqft_per_story": 9500 }, "sprinkler_increase": { "area_multiplier": 3, "height_ft": 20, "stories": 1, "notes": "S1/NS (28500/9500=3) - using S1 values for 1-story building"}, "frontage_increase": { "max_percentage": 75 } },
|
|
"R-2": { "base": { "height_ft": 40, "height_stories": 2, "area_sqft_per_story": 4000 }, "sprinkler_increase": { "area_multiplier": 3, "height_ft": 20, "stories": 1, "notes": "SM/NS (NFPA 13) (12000/4000=3)"}, "frontage_increase": { "max_percentage": 75 } }
|
|
}
|
|
},
|
|
"notes": [
|
|
"NL = No Limit. NP = Not Permitted.",
|
|
"Base values are for NON-SPRINKLERED buildings from Tables 504.3, 504.4, and 506.2 (NS column).",
|
|
"Sprinkler increase area_multiplier is generally SM/NS (multi-story sprinklered area / non-sprinklered area) or S1/NS (single-story sprinklered / non-sprinklered) based on Table 506.2 for NFPA 13 systems, unless noted.",
|
|
"Sprinkler height/story increase assumes NFPA 13 system (Section 504.2).",
|
|
"Frontage increase (If) max percentage is typically 75% (Section 506.2.3).",
|
|
"H occupancies have special limits not detailed here and are often NP in standard tables."
|
|
]
|
|
},
|
|
"occupantLoadFactors": {
|
|
"source": "IBC 2018 Table 1004.1.2 (now 1004.5 in later editions)",
|
|
"description": "Factors for determining occupant load per square foot, based on function of space.",
|
|
"lookupKeys": ["functionOfSpace"],
|
|
"data": {
|
|
"Assembly_FixedSeating_ConcertHall": { "factor": "actual", "unit": "seats", "occupancy_group_context": "A", "notes": "Number of fixed seats." },
|
|
"Assembly_Unconcentrated_NoFixedSeating_TablesChairs": { "factor": 15, "unit": "sqft_net_per_occupant", "occupancy_group_context": "A" },
|
|
"Assembly_StandingSpace": { "factor": 5, "unit": "sqft_net_per_occupant", "occupancy_group_context": "A" },
|
|
"Assembly_ExhibitHallsAndPavilions": { "factor": 15, "unit": "sqft_gross_per_occupant", "occupancy_group_context": "A"},
|
|
"Business_Office": { "factor": 100, "unit": "sqft_gross_per_occupant", "occupancy_group_context": "B" },
|
|
"Educational_Classroom": { "factor": 20, "unit": "sqft_net_per_occupant", "occupancy_group_context": "E" },
|
|
"Educational_ShopsAndVocationalRooms": { "factor": 50, "unit": "sqft_net_per_occupant", "occupancy_group_context": "E" },
|
|
"FactoryIndustrial_General": { "factor": 200, "unit": "sqft_gross_per_occupant", "occupancy_group_context": "F", "exceptions": ["Specific areas or hazardous occupancies may differ."] },
|
|
"Institutional_Hospital_InpatientTreatmentAreas": { "factor": 240, "unit": "sqft_gross_per_occupant", "occupancy_group_context": "I-2" },
|
|
"Institutional_Hospital_SleepingAreas": { "factor": 120, "unit": "sqft_gross_per_occupant", "occupancy_group_context": "I-2" },
|
|
"Mercantile_Retail_SalesArea_StreetFloorAndBasements": { "factor": 60, "unit": "sqft_gross_per_occupant", "occupancy_group_context": "M" },
|
|
"Mercantile_Retail_SalesArea_OtherFloors": { "factor": 60, "unit": "sqft_gross_per_occupant", "occupancy_group_context": "M" },
|
|
"Mercantile_StorageStockShippingAreas": { "factor": 300, "unit": "sqft_gross_per_occupant", "occupancy_group_context": "M"},
|
|
"Residential_HotelsMotels_Dormitories_SleepingRooms": { "factor": 200, "unit": "sqft_gross_per_occupant", "occupancy_group_context": "R-1, R-2" },
|
|
"Storage_General": { "factor": 300, "unit": "sqft_gross_per_occupant", "occupancy_group_context": "S" },
|
|
"ParkingGarages_MechanicalAccess": {"factor": "NP", "unit": "N/A", "occupancy_group_context": "S-2", "notes": "Occupant load not typically calculated by area factor."},
|
|
"AircraftHangars_Storage": {"factor": 500, "unit": "sqft_gross_per_occupant", "occupancy_group_context": "S-1 or U"}
|
|
}
|
|
},
|
|
"egressWidthFactors": {
|
|
"source": "IBC 2018 Section 1005.3",
|
|
"description": "Egress width factor in inches per occupant for stairs and other egress components.",
|
|
"lookupKeys": ["sprinklerStatus_alarmStatus_hazardCategory"],
|
|
"data": {
|
|
"sprinklered_with_alarm_normal_hazard": {
|
|
"stairways_in_per_occ": 0.2,
|
|
"other_egress_comp_in_per_occ": 0.15,
|
|
"notes": "Applies if building has NFPA 13 sprinklers AND emergency voice/alarm system (Sec 1005.3.1, 1005.3.2). Not applicable to Group H, I-2."
|
|
},
|
|
"sprinklered_no_alarm_normal_hazard": {
|
|
"stairways_in_per_occ": 0.3,
|
|
"other_egress_comp_in_per_occ": 0.2,
|
|
"notes": "If sprinklered but no emergency voice/alarm, or for Group H, I-2. Same as non-sprinklered."
|
|
},
|
|
"non_sprinklered_no_alarm_normal_hazard": {
|
|
"stairways_in_per_occ": 0.3,
|
|
"other_egress_comp_in_per_occ": 0.2
|
|
},
|
|
"H_hazard_any_sprinkler_alarm": {
|
|
"stairways_in_per_occ": 0.3,
|
|
"other_egress_comp_in_per_occ": 0.2,
|
|
"notes": "Group H occupancies use these factors regardless of sprinklers/alarm for this specific reduction (1005.3.1, 1005.3.2)."
|
|
},
|
|
"I2_hazard_any_sprinkler_alarm": {
|
|
"stairways_in_per_occ": 0.3,
|
|
"other_egress_comp_in_per_occ": 0.2,
|
|
"notes": "Group I-2 occupancies use these factors regardless of sprinklers/alarm for this specific reduction (1005.3.1, 1005.3.2)."
|
|
},
|
|
"sprinklered_with_alarm": { "stairways_in_per_occ": 0.2, "other_egress_comp_in_per_occ": 0.15, "notes": "Simplified key; assumes normal hazard. Refers to sprinklered_with_alarm_normal_hazard." },
|
|
"sprinklered_no_alarm": { "stairways_in_per_occ": 0.3, "other_egress_comp_in_per_occ": 0.2, "notes": "Simplified key; assumes normal hazard. Refers to sprinklered_no_alarm_normal_hazard." },
|
|
"non_sprinklered_no_alarm": { "stairways_in_per_occ": 0.3, "other_egress_comp_in_per_occ": 0.2, "notes": "Simplified key; assumes normal hazard. Refers to non_sprinklered_no_alarm_normal_hazard." }
|
|
},
|
|
"notes": [
|
|
"Factors are inches per occupant.",
|
|
"Normal hazard implies not Group H or I-2 for the reduced factors."
|
|
]
|
|
},
|
|
"fireResistanceRatingsStructuralElements": {
|
|
"source": "IBC 2018 Table 601",
|
|
"description": "Minimum fire-resistance ratings (in hours) for building elements based on construction type.",
|
|
"lookupKeys": ["constructionType", "buildingElement"],
|
|
"data": {
|
|
"IA": {
|
|
"primary_structural_frame": { "rating_hours": 3, "notes": "Incl. columns, girders, trusses supporting >1 floor or roof." },
|
|
"bearing_walls_exterior": { "rating_hours": 3 },
|
|
"bearing_walls_interior": { "rating_hours": 2, "notes": "Supporting more than one floor or roof." },
|
|
"nonbearing_walls_exterior": { "rating_hours": "Per Table 602", "details_ref": "exteriorWallRatingRequirements", "notes": "Rating based on FSD per Table 602, but not less than required for type if Table 601 is higher." },
|
|
"nonbearing_walls_and_partitions_interior": { "rating_hours": 0 },
|
|
"floor_construction": { "rating_hours": 2 },
|
|
"roof_construction": { "rating_hours": 1.5, "notes": "1 hour if roof is >20ft above floor below." }
|
|
},
|
|
"IB": {
|
|
"primary_structural_frame": { "rating_hours": 2 },
|
|
"bearing_walls_exterior": { "rating_hours": 2 },
|
|
"bearing_walls_interior": { "rating_hours": 2, "notes": "Supporting more than one floor or roof." },
|
|
"nonbearing_walls_exterior": { "rating_hours": "Per Table 602", "details_ref": "exteriorWallRatingRequirements" },
|
|
"nonbearing_walls_and_partitions_interior": { "rating_hours": 0 },
|
|
"floor_construction": { "rating_hours": 2 },
|
|
"roof_construction": { "rating_hours": 1 }
|
|
},
|
|
"IIA": {
|
|
"primary_structural_frame": { "rating_hours": 1 },
|
|
"bearing_walls_exterior": { "rating_hours": 1 },
|
|
"bearing_walls_interior": { "rating_hours": 1 },
|
|
"nonbearing_walls_exterior": { "rating_hours": "Per Table 602", "details_ref": "exteriorWallRatingRequirements" },
|
|
"nonbearing_walls_and_partitions_interior": { "rating_hours": 0 },
|
|
"floor_construction": { "rating_hours": 1 },
|
|
"roof_construction": { "rating_hours": 1 }
|
|
},
|
|
"IIB": {
|
|
"primary_structural_frame": { "rating_hours": 0 },
|
|
"bearing_walls_exterior": { "rating_hours": 0, "notes": "But not less than required by Table 602." },
|
|
"bearing_walls_interior": { "rating_hours": 0 },
|
|
"nonbearing_walls_exterior": { "rating_hours": "Per Table 602", "details_ref": "exteriorWallRatingRequirements" },
|
|
"nonbearing_walls_and_partitions_interior": { "rating_hours": 0 },
|
|
"floor_construction": { "rating_hours": 0 },
|
|
"roof_construction": { "rating_hours": 0 }
|
|
},
|
|
"IIIA": {
|
|
"primary_structural_frame": { "rating_hours": 1, "notes": "Exterior bearing walls 2hr." },
|
|
"bearing_walls_exterior": { "rating_hours": 2 },
|
|
"bearing_walls_interior": { "rating_hours": 1 },
|
|
"nonbearing_walls_exterior": { "rating_hours": "Per Table 602", "details_ref": "exteriorWallRatingRequirements" },
|
|
"nonbearing_walls_and_partitions_interior": { "rating_hours": 0 },
|
|
"floor_construction": { "rating_hours": 1 },
|
|
"roof_construction": { "rating_hours": 1 }
|
|
},
|
|
"IIIB": {
|
|
"primary_structural_frame": { "rating_hours": 0, "notes": "Exterior bearing walls can be 0 or 2hr depending on HT option. This is for non-HT IIIB. Exterior walls 0hr here assumes not HT." },
|
|
"bearing_walls_exterior": { "rating_hours": 0, "notes": "But not less than required by Table 602." },
|
|
"bearing_walls_interior": { "rating_hours": 0 },
|
|
"nonbearing_walls_exterior": { "rating_hours": "Per Table 602", "details_ref": "exteriorWallRatingRequirements" },
|
|
"nonbearing_walls_and_partitions_interior": { "rating_hours": 0 },
|
|
"floor_construction": { "rating_hours": 0 },
|
|
"roof_construction": { "rating_hours": 0 }
|
|
},
|
|
"IV": {
|
|
"primary_structural_frame": { "rating_hours": "HT", "notes": "Heavy Timber sizes per IBC 2304.11. Exterior bearing walls 2hr." },
|
|
"bearing_walls_exterior": { "rating_hours": 2 },
|
|
"bearing_walls_interior": { "rating_hours": 1, "notes": "Or HT if supporting roof only." },
|
|
"nonbearing_walls_exterior": { "rating_hours": "Per Table 602", "details_ref": "exteriorWallRatingRequirements", "notes": "Heavy timber exterior walls minimum 2 hours. Exterior walls must be noncombustible or FRTW or HT." },
|
|
"nonbearing_walls_and_partitions_interior": { "rating_hours": 0, "notes": "Or 1hr if FRTW" },
|
|
"floor_construction": { "rating_hours": "HT" },
|
|
"roof_construction": { "rating_hours": "HT" }
|
|
},
|
|
"VA": {
|
|
"primary_structural_frame": { "rating_hours": 1 },
|
|
"bearing_walls_exterior": { "rating_hours": 1 },
|
|
"bearing_walls_interior": { "rating_hours": 1 },
|
|
"nonbearing_walls_exterior": { "rating_hours": "Per Table 602", "details_ref": "exteriorWallRatingRequirements" },
|
|
"nonbearing_walls_and_partitions_interior": { "rating_hours": 0 },
|
|
"floor_construction": { "rating_hours": 1 },
|
|
"roof_construction": { "rating_hours": 1 }
|
|
},
|
|
"VB": {
|
|
"primary_structural_frame": { "rating_hours": 0 },
|
|
"bearing_walls_exterior": { "rating_hours": 0, "notes": "But not less than required by Table 602." },
|
|
"bearing_walls_interior": { "rating_hours": 0 },
|
|
"nonbearing_walls_exterior": { "rating_hours": "Per Table 602", "details_ref": "exteriorWallRatingRequirements" },
|
|
"nonbearing_walls_and_partitions_interior": { "rating_hours": 0 },
|
|
"floor_construction": { "rating_hours": 0 },
|
|
"roof_construction": { "rating_hours": 0 }
|
|
}
|
|
}
|
|
},
|
|
"plumbingFixtureCounts": {
|
|
"source": "IBC 2018 Table 2902.1",
|
|
"description": "Minimum number of plumbing fixtures based on occupancy group and occupant load.",
|
|
"lookupKeys": ["occupancyGroup", "fixtureType"],
|
|
"data": {
|
|
"A-1": {
|
|
"water_closets_male": { "ratio_per_occupant": "1 per 125", "calculation_type": "ratio", "min_count": 1},
|
|
"water_closets_female": { "ratio_per_occupant": "1 per 65", "calculation_type": "ratio", "min_count": 1},
|
|
"lavatories_male": { "ratio_per_occupant": "1 per 200", "calculation_type": "ratio", "min_count": 1},
|
|
"lavatories_female": { "ratio_per_occupant": "1 per 200", "calculation_type": "ratio", "min_count": 1},
|
|
"drinking_fountains": { "ratio_per_occupant": "1 per 500", "calculation_type": "ratio", "min_count": 1},
|
|
"service_sinks": {"calculation_type": "notes_only", "notes": "At least one service sink shall be provided."}
|
|
},
|
|
"A-2": {
|
|
"water_closets_male": { "ratio_per_occupant": "1 per 40", "calculation_type": "ratio", "min_count": 1},
|
|
"water_closets_female": { "ratio_per_occupant": "1 per 40", "calculation_type": "ratio", "min_count": 1},
|
|
"lavatories_male": { "ratio_per_occupant": "1 per 75", "calculation_type": "ratio", "min_count": 1},
|
|
"lavatories_female": { "ratio_per_occupant": "1 per 75", "calculation_type": "ratio", "min_count": 1},
|
|
"drinking_fountains": { "ratio_per_occupant": "1 per 500", "calculation_type": "ratio", "min_count": 1},
|
|
"service_sinks": {"calculation_type": "notes_only", "notes": "At least one service sink shall be provided."}
|
|
},
|
|
"A-3": {
|
|
"water_closets_male": { "ratio_per_occupant": "1 per 125", "calculation_type": "ratio", "min_count": 1},
|
|
"water_closets_female": { "ratio_per_occupant": "1 per 65", "calculation_type": "ratio", "min_count": 1},
|
|
"lavatories_male": { "ratio_per_occupant": "1 per 200", "calculation_type": "ratio", "min_count": 1},
|
|
"lavatories_female": { "ratio_per_occupant": "1 per 200", "calculation_type": "ratio", "min_count": 1},
|
|
"drinking_fountains": { "ratio_per_occupant": "1 per 500", "calculation_type": "ratio", "min_count": 1},
|
|
"service_sinks": {"calculation_type": "notes_only", "notes": "At least one service sink shall be provided."}
|
|
},
|
|
"B": {
|
|
"water_closets_male": {
|
|
"calculation_type": "tiered", "min_count": 1,
|
|
"tiers": [
|
|
{ "occupants_up_to": 15, "fixtures": 1 },
|
|
{ "occupants_up_to": 35, "fixtures": 2 },
|
|
{ "occupants_up_to": 55, "fixtures": 3 }
|
|
],
|
|
"occupants_over": 55, "base_fixtures_for_over": 3, "fixtures_per_additional_over": 40,
|
|
"notes": "For males. Urinals: Where urinals are provided, one water closet less than the number specified may be provided for each urinal installed, except the number of water closets shall not be reduced to less than two-thirds of the minimum specified."
|
|
},
|
|
"water_closets_female": {
|
|
"calculation_type": "tiered", "min_count": 1,
|
|
"tiers": [
|
|
{ "occupants_up_to": 15, "fixtures": 1 },
|
|
{ "occupants_up_to": 35, "fixtures": 2 },
|
|
{ "occupants_up_to": 55, "fixtures": 3 }
|
|
],
|
|
"occupants_over": 55, "base_fixtures_for_over": 3, "fixtures_per_additional_over": 40
|
|
},
|
|
"lavatories_male": { "calculation_type": "tiered", "min_count": 1,
|
|
"tiers": [
|
|
{ "occupants_up_to": 15, "fixtures": 1 },
|
|
{ "occupants_up_to": 35, "fixtures": 2 },
|
|
{ "occupants_up_to": 60, "fixtures": 3 }
|
|
],
|
|
"occupants_over": 60, "base_fixtures_for_over": 3, "fixtures_per_additional_over": 45,
|
|
"notes": "Combined for male and female then distributed. Or per water closets if more restrictive."
|
|
},
|
|
"lavatories_female": { "calculation_type": "tiered", "min_count": 1,
|
|
"tiers": [
|
|
{ "occupants_up_to": 15, "fixtures": 1 },
|
|
{ "occupants_up_to": 35, "fixtures": 2 },
|
|
{ "occupants_up_to": 60, "fixtures": 3 }
|
|
],
|
|
"occupants_over": 60, "base_fixtures_for_over": 3, "fixtures_per_additional_over": 45,
|
|
"notes": "Combined for male and female then distributed. Or per water closets if more restrictive."
|
|
},
|
|
"drinking_fountains": { "ratio_per_occupant": "1 per 100", "calculation_type": "ratio", "min_count": 1},
|
|
"service_sinks": {"calculation_type": "notes_only", "notes": "At least one service sink shall be provided."}
|
|
},
|
|
"E": {
|
|
"water_closets_male": { "ratio_per_occupant": "1 per 50", "calculation_type": "ratio", "min_count": 1},
|
|
"water_closets_female": { "ratio_per_occupant": "1 per 50", "calculation_type": "ratio", "min_count": 1},
|
|
"lavatories_male": { "ratio_per_occupant": "1 per 50", "calculation_type": "ratio", "min_count": 1},
|
|
"lavatories_female": { "ratio_per_occupant": "1 per 50", "calculation_type": "ratio", "min_count": 1},
|
|
"drinking_fountains": { "ratio_per_occupant": "1 per 100", "calculation_type": "ratio", "min_count": 1},
|
|
"service_sinks": {"calculation_type": "notes_only", "notes": "At least one service sink shall be provided."}
|
|
},
|
|
"F-1": {
|
|
"water_closets_male": { "calculation_type": "tiered", "min_count": 1,
|
|
"tiers": [
|
|
{"occupants_up_to": 15, "fixtures": 1}, {"occupants_up_to": 35, "fixtures": 2}, {"occupants_up_to": 55, "fixtures": 3},
|
|
{"occupants_up_to": 80, "fixtures": 4}, {"occupants_up_to": 110, "fixtures": 5}, {"occupants_up_to": 150, "fixtures": 6}
|
|
],
|
|
"occupants_over": 150, "base_fixtures_for_over": 6, "fixtures_per_additional_over": 40,
|
|
"notes": "Per Table 2902.1 Note a. Urinal substitution allowed." },
|
|
"water_closets_female": { "calculation_type": "tiered", "min_count": 1,
|
|
"tiers": [
|
|
{"occupants_up_to": 15, "fixtures": 1}, {"occupants_up_to": 35, "fixtures": 2}, {"occupants_up_to": 55, "fixtures": 3},
|
|
{"occupants_up_to": 80, "fixtures": 4}, {"occupants_up_to": 110, "fixtures": 5}, {"occupants_up_to": 150, "fixtures": 6}
|
|
],
|
|
"occupants_over": 150, "base_fixtures_for_over": 6, "fixtures_per_additional_over": 40,
|
|
"notes": "Per Table 2902.1 Note a." },
|
|
"lavatories_male": { "ratio_per_occupant": "1 per 100", "calculation_type": "ratio", "min_count": 1, "notes": "Combined for male and female." },
|
|
"lavatories_female": { "ratio_per_occupant": "1 per 100", "calculation_type": "ratio", "min_count": 1, "notes": "Combined for male and female." },
|
|
"drinking_fountains": { "ratio_per_occupant": "1 per 100", "calculation_type": "ratio", "min_count": 1 },
|
|
"service_sinks": { "calculation_type": "notes_only", "notes": "At least one." }
|
|
},
|
|
"I-1": {
|
|
"water_closets_male": { "ratio_per_occupant": "1 per 10 residents", "calculation_type": "ratio", "min_count": 1 },
|
|
"water_closets_female": { "ratio_per_occupant": "1 per 10 residents", "calculation_type": "ratio", "min_count": 1 },
|
|
"lavatories_male": { "ratio_per_occupant": "1 per 10 residents", "calculation_type": "ratio", "min_count": 1 },
|
|
"lavatories_female": { "ratio_per_occupant": "1 per 10 residents", "calculation_type": "ratio", "min_count": 1 },
|
|
"bathtubs_or_showers": { "ratio_per_occupant": "1 per 8 residents", "calculation_type": "ratio", "min_count": 1 },
|
|
"drinking_fountains": { "ratio_per_occupant": "1 per 100", "calculation_type": "ratio", "min_count": 1, "notes": "Accessible to residents." },
|
|
"service_sinks": { "calculation_type": "notes_only", "notes": "At least one service sink per floor."}
|
|
},
|
|
"M": {
|
|
"water_closets_male": { "ratio_per_occupant": "1 per 500", "calculation_type": "ratio", "min_count": 1},
|
|
"water_closets_female": { "ratio_per_occupant": "1 per 500", "calculation_type": "ratio", "min_count": 1},
|
|
"lavatories_male": { "ratio_per_occupant": "1 per 750", "calculation_type": "ratio", "min_count": 1},
|
|
"lavatories_female": { "ratio_per_occupant": "1 per 750", "calculation_type": "ratio", "min_count": 1},
|
|
"drinking_fountains": { "ratio_per_occupant": "1 per 1000", "calculation_type": "ratio", "min_count": 1},
|
|
"service_sinks": {"calculation_type": "notes_only", "notes": "At least one service sink shall be provided."}
|
|
},
|
|
"R-1": {
|
|
"water_closets_male": {"calculation_type": "fixed", "count": 1, "notes": "Per sleeping unit. Separate facilities for public/employee use per other occupancies."},
|
|
"water_closets_female": {"calculation_type": "fixed", "count": 1, "notes": "Per sleeping unit. Separate facilities for public/employee use per other occupancies."},
|
|
"lavatories_male": {"calculation_type": "fixed", "count": 1, "notes": "Per sleeping unit."},
|
|
"lavatories_female": {"calculation_type": "fixed", "count": 1, "notes": "Per sleeping unit."},
|
|
"drinking_fountains": { "calculation_type": "notes_only", "notes": "1 per 100 for public/employee areas. Not required in sleeping units."},
|
|
"service_sinks": {"calculation_type": "notes_only", "notes": "At least one service sink shall be provided."}
|
|
},
|
|
"R-2": {
|
|
"water_closets_male": {"calculation_type": "fixed", "count": 1, "notes": "Per dwelling unit. For congregate living with >10 occupants, use R-1 public provisions."},
|
|
"water_closets_female": {"calculation_type": "fixed", "count": 1, "notes": "Per dwelling unit. For congregate living with >10 occupants, use R-1 public provisions."},
|
|
"lavatories_male": {"calculation_type": "fixed", "count": 1, "notes": "Per dwelling unit."},
|
|
"lavatories_female": {"calculation_type": "fixed", "count": 1, "notes": "Per dwelling unit."},
|
|
"drinking_fountains": { "calculation_type": "notes_only", "notes": "Not required in dwelling units. For common areas, 1 per 100 if applicable."},
|
|
"service_sinks": {"calculation_type": "notes_only", "notes": "At least one service sink shall be provided in common laundry or for building maintenance."}
|
|
},
|
|
"S-1": {
|
|
"water_closets_male": { "calculation_type": "tiered", "min_count": 1,
|
|
"tiers": [
|
|
{"occupants_up_to": 15, "fixtures": 1}, {"occupants_up_to": 35, "fixtures": 2}, {"occupants_up_to": 55, "fixtures": 3},
|
|
{"occupants_up_to": 80, "fixtures": 4}, {"occupants_up_to": 110, "fixtures": 5}, {"occupants_up_to": 150, "fixtures": 6}
|
|
],
|
|
"occupants_over": 150, "base_fixtures_for_over": 6, "fixtures_per_additional_over": 40,
|
|
"notes": "Per Table 2902.1 Note a (same as F-1). Urinal substitution allowed." },
|
|
"water_closets_female": { "calculation_type": "tiered", "min_count": 1,
|
|
"tiers": [
|
|
{"occupants_up_to": 15, "fixtures": 1}, {"occupants_up_to": 35, "fixtures": 2}, {"occupants_up_to": 55, "fixtures": 3},
|
|
{"occupants_up_to": 80, "fixtures": 4}, {"occupants_up_to": 110, "fixtures": 5}, {"occupants_up_to": 150, "fixtures": 6}
|
|
],
|
|
"occupants_over": 150, "base_fixtures_for_over": 6, "fixtures_per_additional_over": 40,
|
|
"notes": "Per Table 2902.1 Note a (same as F-1)." },
|
|
"lavatories_male": { "ratio_per_occupant": "1 per 100", "calculation_type": "ratio", "min_count": 1, "notes": "Combined for male and female." },
|
|
"lavatories_female": { "ratio_per_occupant": "1 per 100", "calculation_type": "ratio", "min_count": 1, "notes": "Combined for male and female." },
|
|
"drinking_fountains": { "ratio_per_occupant": "1 per 100", "calculation_type": "ratio", "min_count": 1, "notes": "Where such employees are exposed to heat or radiation from fire, 1 per 50." },
|
|
"service_sinks": { "calculation_type": "notes_only", "notes": "At least one." }
|
|
}
|
|
},
|
|
"notes": [
|
|
"Fixture counts are minimums. Urinals can substitute for male WCs per footnotes.",
|
|
"Separate facilities for male and female are required where public toilet facilities are provided.",
|
|
"Occupant load for fixture counts is based on 50% male, 50% female distribution."
|
|
]
|
|
},
|
|
"exteriorWallRatingRequirements": {
|
|
"source": "IBC 2018 Table 602",
|
|
"description": "Minimum fire-resistance rating (in hours) for nonbearing exterior walls based on occupancy group and fire separation distance (FSD). Primarily applies to Types IIB, IIIB, VB, or when Table 601 otherwise permits a 0-hour rating for other types. For other construction types, Table 601 governs but shall not be less than Table 602.",
|
|
"lookupKeys": ["occupancyGroupCategory", "fsdRangeKey"],
|
|
"data": {
|
|
"F-1_M_S-1": {
|
|
"0_to_under_5": { "rating_hours": 2, "opening_protection_ref": "IBC 2018 705.8" },
|
|
"5_to_under_10": { "rating_hours": 1, "opening_protection_ref": "IBC 2018 705.8" },
|
|
"10_to_under_30": { "rating_hours": 1, "opening_protection_ref": "IBC 2018 705.8" },
|
|
"30_and_over": { "rating_hours": 0 }
|
|
},
|
|
"H": {
|
|
"0_to_under_5": { "rating_hours": 3, "opening_protection_ref": "IBC 2018 705.8", "notes": "Or as required by Chapter 4 for specific H group." },
|
|
"5_to_under_10": { "rating_hours": 2, "opening_protection_ref": "IBC 2018 705.8", "notes": "Or as required by Chapter 4." },
|
|
"10_to_under_30": { "rating_hours": 1, "opening_protection_ref": "IBC 2018 705.8", "notes": "Or as required by Chapter 4." },
|
|
"30_and_over": { "rating_hours": 1, "notes": "Or as required by Chapter 4."}
|
|
},
|
|
"A_B_E_I_R": {
|
|
"0_to_under_5": { "rating_hours": 1, "opening_protection_ref": "IBC 2018 705.8", "notes":"For R-3 with FSD < 3ft, rating is 1hr. For R-3 with FSD 3 to <5ft, rating is 1hr. This is general A,B,E,I,R." },
|
|
"5_to_under_10": { "rating_hours": 1, "opening_protection_ref": "IBC 2018 705.8" },
|
|
"10_to_under_30": { "rating_hours": 0, "opening_protection_ref": "IBC 2018 705.8", "notes": "For R-3, FSD 5ft or greater is 0hr." },
|
|
"30_and_over": { "rating_hours": 0 }
|
|
},
|
|
"F-2_S-2_U": {
|
|
"0_to_under_5": { "rating_hours": 1, "opening_protection_ref": "IBC 2018 705.8" },
|
|
"5_to_under_10": { "rating_hours": 0, "opening_protection_ref": "IBC 2018 705.8" },
|
|
"10_to_under_30": { "rating_hours": 0 },
|
|
"30_and_over": { "rating_hours": 0 }
|
|
}
|
|
},
|
|
"notes": [
|
|
"These ratings are for NONBEARING exterior walls per IBC 2018 Table 602, for construction types indicated in that table (typically IIB, IIIB, VB).",
|
|
"For other construction types, Table 601 ratings apply but must not be less than Table 602.",
|
|
"Bearing exterior walls are rated per Table 601.",
|
|
"Opening protection (e.g., fire windows, fire doors) is required based on wall rating and FSD per IBC Section 705.8."
|
|
]
|
|
},
|
|
"interiorFinishRequirements": {
|
|
"source": "IBC 2018 Table 803.11",
|
|
"description": "Minimum interior wall and ceiling finish classification based on occupancy, location, and sprinkler status.",
|
|
"lookupKeys": ["occupancyGroup", "locationInBuilding"],
|
|
"definitions": {
|
|
"ClassA": { "flame_spread_index": "0-25", "smoke_developed_index": "0-450" },
|
|
"ClassB": { "flame_spread_index": "26-75", "smoke_developed_index": "0-450" },
|
|
"ClassC": { "flame_spread_index": "76-200", "smoke_developed_index": "0-450" }
|
|
},
|
|
"data": {
|
|
"A": {
|
|
"exits_and_enclosures": { "flameSpread": "Class B", "smokeDeveloped": "450" },
|
|
"corridors": { "flameSpread": "Class B", "smokeDeveloped": "450" },
|
|
"rooms_and_spaces": { "flameSpread": "Class C", "smokeDeveloped": "450" }
|
|
},
|
|
"B": {
|
|
"exits_and_enclosures": { "flameSpread": "Class B", "smokeDeveloped": "450" },
|
|
"corridors": { "flameSpread": "Class C", "smokeDeveloped": "450", "notes": "If not sprinklered, Class B." },
|
|
"rooms_and_spaces": { "flameSpread": "Class C", "smokeDeveloped": "450" }
|
|
},
|
|
"E": {
|
|
"exits_and_enclosures": { "flameSpread": "Class B", "smokeDeveloped": "450" },
|
|
"corridors": { "flameSpread": "Class C", "smokeDeveloped": "450", "notes": "If not sprinklered, Class B." },
|
|
"rooms_and_spaces": { "flameSpread": "Class C", "smokeDeveloped": "450", "notes": "Class B in rooms with OL > 50 per Table 803.11 footnote b." }
|
|
},
|
|
"F-1": {
|
|
"exits_and_enclosures": { "flameSpread": "Class B", "smokeDeveloped": "450" },
|
|
"corridors": { "flameSpread": "Class C", "smokeDeveloped": "450", "notes": "If not sprinklered, Class B." },
|
|
"rooms_and_spaces": { "flameSpread": "Class C", "smokeDeveloped": "450" }
|
|
},
|
|
"I-2": {
|
|
"exits_and_enclosures": { "flameSpread": "Class A", "smokeDeveloped": "450" },
|
|
"corridors": { "flameSpread": "Class B", "smokeDeveloped": "450" },
|
|
"rooms_and_spaces": { "flameSpread": "Class B", "smokeDeveloped": "450", "notes": "Sleeping rooms Class B. Other rooms Class C. Check Table 803.11 footnote c." }
|
|
},
|
|
"M": {
|
|
"exits_and_enclosures": { "flameSpread": "Class B", "smokeDeveloped": "450" },
|
|
"corridors": { "flameSpread": "Class C", "smokeDeveloped": "450", "notes": "If not sprinklered, Class B." },
|
|
"rooms_and_spaces": { "flameSpread": "Class C", "smokeDeveloped": "450", "notes": "Class B in rooms > 3000 sqft used for sale of upholstered furniture (Table 803.11 footnote e)." }
|
|
},
|
|
"R-1": {
|
|
"exits_and_enclosures": { "flameSpread": "Class B", "smokeDeveloped": "450" },
|
|
"corridors": { "flameSpread": "Class C", "smokeDeveloped": "450", "notes": "If not sprinklered, Class B." },
|
|
"rooms_and_spaces": { "flameSpread": "Class C", "smokeDeveloped": "450" }
|
|
},
|
|
"R-2": {
|
|
"exits_and_enclosures": { "flameSpread": "Class B", "smokeDeveloped": "450" },
|
|
"corridors": { "flameSpread": "Class C", "smokeDeveloped": "450", "notes": "If not sprinklered, Class B." },
|
|
"rooms_and_spaces": { "flameSpread": "Class C", "smokeDeveloped": "450" }
|
|
},
|
|
"S-1": {
|
|
"exits_and_enclosures": { "flameSpread": "Class B", "smokeDeveloped": "450" },
|
|
"corridors": { "flameSpread": "Class C", "smokeDeveloped": "450", "notes": "If not sprinklered, Class B." },
|
|
"rooms_and_spaces": { "flameSpread": "Class C", "smokeDeveloped": "450" }
|
|
}
|
|
},
|
|
"notes": [
|
|
"Refer to IBC 2018 Table 803.11 for full details and footnotes. For this simplified table, 'flameSpread' refers to the minimum required class. Sprinklered values assume an NFPA 13 system throughout, allowing reduction per 803.1.2 unless Table 803.11 notes are more stringent."
|
|
]
|
|
},
|
|
"meansOfEgressRequirements": {
|
|
"source": "IBC 2018 Sections 1006, 1017, 1020.4 (Tables 1006.2.1, 1006.3.1, 1017.2)",
|
|
"description": "Requirements for exit access travel distance, common path of egress travel, and number of exits.",
|
|
"lookupKeys": ["occupancyGroup"],
|
|
"data": {
|
|
"A": {
|
|
"exit_access_travel_distance": { "sprinklered": 250, "non_sprinklered": 200, "notes": "From Table 1017.2" },
|
|
"common_path_of_travel": { "sprinklered": 75, "non_sprinklered": 75, "notes": "General for A from Table 1006.3.1. Some specific A (e.g., A-4, A-5 without smoke protection) common path is 20ft if not sprinklered." },
|
|
"dead_end_corridors": { "max_length": 20, "sprinklered_exception_length": 50, "notes": "Increased to 50ft if sprinklered AND (Groups B, E, F, M, S, U with OL in dead-end <=30) OR (Group R-2 within dwelling units). General A is 20ft." },
|
|
"number_of_exits": [
|
|
{ "occupant_load": "1-500", "required_exits": 2 },
|
|
{ "occupant_load": "501-1000", "required_exits": 3 },
|
|
{ "occupant_load": "1001+", "required_exits": 4 }
|
|
]
|
|
},
|
|
"B": {
|
|
"exit_access_travel_distance": { "sprinklered": 300, "non_sprinklered": 200 },
|
|
"common_path_of_travel": { "sprinklered": 100, "non_sprinklered": 75 },
|
|
"dead_end_corridors": { "max_length": 20, "sprinklered_exception_length": 50, "notes":"50ft if sprinklered and OL of dead-end portion <= 30 (1020.4 Exc 2)" },
|
|
"number_of_exits": [
|
|
{ "occupant_load": "1-49", "required_exits": 1, "notes": "If specific conditions in Table 1006.2.1 are met."},
|
|
{ "occupant_load": "50-500", "required_exits": 2 },
|
|
{ "occupant_load": "501-1000", "required_exits": 3 },
|
|
{ "occupant_load": "1001+", "required_exits": 4 }
|
|
]
|
|
},
|
|
"E": {
|
|
"exit_access_travel_distance": { "sprinklered": 250, "non_sprinklered": 200 },
|
|
"common_path_of_travel": { "sprinklered": 75, "non_sprinklered": 75 },
|
|
"dead_end_corridors": { "max_length": 20, "sprinklered_exception_length": 50, "notes":"50ft if sprinklered and OL of dead-end portion <= 30 (1020.4 Exc 2)"},
|
|
"number_of_exits": [
|
|
{ "occupant_load": "1-49", "required_exits": 1, "notes": "From classrooms if specific conditions in Table 1006.2.1 are met."},
|
|
{ "occupant_load": "50-500", "required_exits": 2 },
|
|
{ "occupant_load": "501-1000", "required_exits": 3 },
|
|
{ "occupant_load": "1001+", "required_exits": 4 }
|
|
]
|
|
},
|
|
"F-1": {
|
|
"exit_access_travel_distance": { "sprinklered": 250, "non_sprinklered": 200, "notes": "Can be increased to 400ft (sprinklered) or 300ft (non-sprinklered) in F-1 if one-story building and other criteria met (Table 1017.2 Note b)." },
|
|
"common_path_of_travel": { "sprinklered": 100, "non_sprinklered": 75 },
|
|
"dead_end_corridors": { "max_length": 20, "sprinklered_exception_length": 50, "notes":"50ft if sprinklered and OL of dead-end portion <= 30 (1020.4 Exc 2)"},
|
|
"number_of_exits": [
|
|
{ "occupant_load": "1-49", "required_exits": 1, "notes": "If specific conditions in Table 1006.2.1 are met."},
|
|
{ "occupant_load": "50-500", "required_exits": 2 },
|
|
{ "occupant_load": "501-1000", "required_exits": 3 },
|
|
{ "occupant_load": "1001+", "required_exits": 4 }
|
|
]
|
|
},
|
|
"I-2": {
|
|
"exit_access_travel_distance": { "sprinklered": 200, "non_sprinklered": 150 },
|
|
"common_path_of_travel": { "sprinklered": 75, "non_sprinklered": 75, "notes": "For sleeping suites can be 100ft to exit door of suite (Table 1006.3.1 Note c)." },
|
|
"dead_end_corridors": { "max_length": 20, "sprinklered_exception_length": 50, "notes": "50ft in patient sleeping/treatment rooms if sprinklered and OL of dead-end portion <=30 (or other I-2 specific exceptions)." },
|
|
"number_of_exits": [
|
|
{ "occupant_load": "1-500", "required_exits": 2 },
|
|
{ "occupant_load": "501-1000", "required_exits": 3 },
|
|
{ "occupant_load": "1001+", "required_exits": 4 }
|
|
]
|
|
},
|
|
"M": {
|
|
"exit_access_travel_distance": { "sprinklered": 400, "non_sprinklered": 200 },
|
|
"common_path_of_travel": { "sprinklered": 100, "non_sprinklered": 75 },
|
|
"dead_end_corridors": { "max_length": 20, "sprinklered_exception_length": 50, "notes":"50ft if sprinklered and OL of dead-end portion <= 30 (1020.4 Exc 2)"},
|
|
"number_of_exits": [
|
|
{ "occupant_load": "1-49", "required_exits": 1, "notes": "If specific conditions in Table 1006.2.1 are met."},
|
|
{ "occupant_load": "50-500", "required_exits": 2 },
|
|
{ "occupant_load": "501-1000", "required_exits": 3 },
|
|
{ "occupant_load": "1001+", "required_exits": 4 }
|
|
]
|
|
},
|
|
"R-1": {
|
|
"exit_access_travel_distance": { "sprinklered": 250, "non_sprinklered": 200 },
|
|
"common_path_of_travel": { "sprinklered": 75, "non_sprinklered": 75, "notes": "From within sleeping unit to corridor can be 125ft per Table 1006.3.1 Note a." },
|
|
"dead_end_corridors": { "max_length": 20, "sprinklered_exception_length": 50, "notes":"50ft from within sleeping unit (1020.4 Exc 1)"},
|
|
"number_of_exits": [
|
|
{ "occupant_load": "1-20", "required_exits": 1, "notes": "If specific conditions in Table 1006.2.1 Note c are met (e.g. within sleeping unit)." },
|
|
{ "occupant_load": "1-500", "required_exits": 2 , "notes": "General requirement for story if single exit exception not met."},
|
|
{ "occupant_load": "501-1000", "required_exits": 3 },
|
|
{ "occupant_load": "1001+", "required_exits": 4 }
|
|
]
|
|
},
|
|
"R-2": {
|
|
"exit_access_travel_distance": { "sprinklered": 250, "non_sprinklered": 200 },
|
|
"common_path_of_travel": { "sprinklered": 125, "non_sprinklered": 125, "notes": "From within dwelling unit to exit door (corridor)." },
|
|
"dead_end_corridors": { "max_length": 20, "sprinklered_exception_length": 50, "notes":"50ft from within dwelling unit (1020.4 Exc 1)" },
|
|
"number_of_exits": [
|
|
{ "occupant_load": "1-20", "required_exits": 1, "notes": "If specific conditions in Table 1006.2.1 Note c are met (e.g. within dwelling unit)." },
|
|
{ "occupant_load": "1-500", "required_exits": 2 , "notes": "General requirement for story if single exit exception not met."},
|
|
{ "occupant_load": "501-1000", "required_exits": 3 },
|
|
{ "occupant_load": "1001+", "required_exits": 4 }
|
|
]
|
|
},
|
|
"S-1": {
|
|
"exit_access_travel_distance": { "sprinklered": 400, "non_sprinklered": 250, "notes": "Table 1017.2. Can be lower for high-piled storage." },
|
|
"common_path_of_travel": { "sprinklered": 100, "non_sprinklered": 75 },
|
|
"dead_end_corridors": { "max_length": 20, "sprinklered_exception_length": 50, "notes":"50ft if sprinklered and OL of dead-end portion <= 30 (1020.4 Exc 2)"},
|
|
"number_of_exits": [
|
|
{ "occupant_load": "1-49", "required_exits": 1, "notes": "If specific conditions in Table 1006.2.1 are met."},
|
|
{ "occupant_load": "50-500", "required_exits": 2 },
|
|
{ "occupant_load": "501-1000", "required_exits": 3 },
|
|
{ "occupant_load": "1001+", "required_exits": 4 }
|
|
]
|
|
}
|
|
}
|
|
},
|
|
"accessibleRouteRequirements": {
|
|
"source": "IBC 2018 Chapter 11, Referencing ICC A117.1-2009 (or 2017 if adopted)",
|
|
"description": "Key dimensional requirements for accessible routes and elements (illustrative, based on ICC A117.1).",
|
|
"lookupKeys": ["elementType"],
|
|
"data": {
|
|
"accessible_route": {
|
|
"min_clear_width": "36 inches",
|
|
"max_running_slope": "1:20 (5%) for walks, 1:12 (8.33%) for ramps",
|
|
"max_cross_slope": "1:48 (2.08%)",
|
|
"passing_space_interval": "200 feet (if route < 60 inches wide)",
|
|
"passing_space_size": "60 inches x 60 inches minimum"
|
|
},
|
|
"doors": {
|
|
"min_clear_opening_width": "32 inches (when door open 90 degrees)",
|
|
"threshold_height_max_beveled": "1/2 inch",
|
|
"threshold_height_max_vertical": "1/4 inch",
|
|
"opening_force_interior_hinged": "5 pounds max"
|
|
},
|
|
"ramps": {
|
|
"max_slope": "1:12 (8.33%)",
|
|
"min_clear_width": "36 inches",
|
|
"max_rise_for_single_run": "30 inches",
|
|
"landing_size_min": "60 inches x 60 inches (at top/bottom/turns)",
|
|
"landing_length_straight_min": "60 inches"
|
|
},
|
|
"toilet_rooms_single_user": {
|
|
"clear_floor_space_wc_parallel_approach": "Varies, e.g., 60 inches wide x 56 inches deep",
|
|
"clear_floor_space_wc_forward_approach": "Varies, e.g., 36 inches wide x 66 inches deep (if door on side wall)",
|
|
"door_swing_note": "Door shall not swing into clear floor space required for any fixture.",
|
|
"grab_bar_side_wall_length": "42 inches min",
|
|
"grab_bar_rear_wall_length": "36 inches min",
|
|
"toilet_centerline_from_side_wall": "16 to 18 inches"
|
|
}
|
|
},
|
|
"notes": [
|
|
"Values are illustrative and based on ICC A117.1, which IBC Chapter 11 references.",
|
|
"Always verify with the specific edition of ICC A117.1 adopted by the jurisdiction.",
|
|
"Many other detailed requirements apply."
|
|
]
|
|
}
|
|
},
|
|
"notes": [
|
|
"This data is a representation of IBC 2018 for illustrative and computational purposes, with updates for completeness.",
|
|
"Always verify with the officially adopted code for your jurisdiction.",
|
|
"Many exceptions and specific conditions may apply that are not fully detailed here.",
|
|
"NL = No Limit.",
|
|
"NP = Not Permitted."
|
|
]
|
|
} |