UNPKG

bible-ref-parse

Version:

Identifies and parses Bible references (like John 3:16) in over 40 languages.

1 lines 153 kB
const root=this;class bcv_parser{static initClass(){this.prototype.s="",this.prototype.entities=[],this.prototype.passage=null,this.prototype.regexps={},this.prototype.options={consecutive_combination_strategy:"combine",osis_compaction_strategy:"b",book_sequence_strategy:"ignore",invalid_sequence_strategy:"ignore",sequence_combination_strategy:"combine",punctuation_strategy:"us",invalid_passage_strategy:"ignore",non_latin_digits_strategy:"ignore",passage_existence_strategy:"bcv",zero_chapter_strategy:"error",zero_verse_strategy:"error",single_chapter_1_strategy:"chapter",book_alone_strategy:"ignore",book_range_strategy:"ignore",captive_end_digits_strategy:"delete",end_range_digits_strategy:"verse",include_apocrypha:!1,ps151_strategy:"c",versification_system:"default",case_sensitive:"none"}}constructor(){for(var s of(this.options={},Object.keys(bcv_parser.prototype.options||{}))){var e=bcv_parser.prototype.options[s];this.options[s]=e}this.versification_system(this.options.versification_system)}parse(s){return this.reset(),this.s=s,s=this.replace_control_characters(s),[s,this.passage.books]=Array.from(this.match_books(s)),[this.entities]=Array.from(this.match_passages(s)),this}parse_with_context(s,e){let a;return this.reset(),[e,this.passage.books]=Array.from(this.match_books(this.replace_control_characters(e))),[a,e]=Array.from(this.match_passages(e)),this.reset(),this.s=s,s=this.replace_control_characters(s),[s,this.passage.books]=Array.from(this.match_books(s)),this.passage.books.push({value:"",parsed:[],start_index:0,type:"context",context:e}),s=""+(this.passage.books.length-1)+"/9"+s,[this.entities]=Array.from(this.match_passages(s)),this}reset(){return this.s="",this.entities=[],this.passage?(this.passage.books=[],this.passage.indices={}):(this.passage=new bcv_passage,this.passage.options=this.options,this.passage.translations=this.translations)}set_options(s){for(var e of Object.keys(s||{})){var a=s[e];"include_apocrypha"===e||"versification_system"===e||"case_sensitive"===e?this[e](a):this.options[e]=a}return this}include_apocrypha(s){if(null==s||!0!==s&&!1!==s)return this;for(var e of(this.options.include_apocrypha=s,this.regexps.books=this.regexps.get_books(s,this.options.case_sensitive),Object.keys(this.translations||{}))){var a;if("aliases"!==e&&"alternates"!==e)if(null==this.translations[e].chapters&&(this.translations[e].chapters={}),null==this.translations[e].chapters.Ps&&(this.translations[e].chapters.Ps=bcv_utils.shallow_clone_book_data(this.translations.default.chapters.Ps)),!0===s)a=null!=this.translations[e].chapters.Ps151?bcv_utils.get_book_verse_count(this.translations[e].chapters.Ps151,1):bcv_utils.get_book_verse_count(this.translations.default.chapters.Ps151,1),bcv_utils.set_book_verse_count(this.translations[e].chapters.Ps,151,a);else 151===bcv_utils.get_book_chapter_count(this.translations[e].chapters.Ps)&&bcv_utils.delete_book_verse_count(this.translations[e].chapters.Ps,151)}return this}versification_system(s){let e,a;if(null==s||null==this.translations[s])return this;if(null!=this.translations.alternates.default)if("default"===s)for(e of(null!=this.translations.alternates.default.order&&(this.translations.default.order=bcv_utils.shallow_clone(this.translations.alternates.default.order)),Object.keys(this.translations.alternates.default.chapters||{})))a=this.translations.alternates.default.chapters[e],this.translations.default.chapters[e]=bcv_utils.shallow_clone_book_data(a);else this.versification_system("default");if(null==this.translations.alternates.default&&(this.translations.alternates.default={order:null,chapters:{}}),"default"!==s&&null!=this.translations[s].order&&(null==this.translations.alternates.default.order&&(this.translations.alternates.default.order=bcv_utils.shallow_clone(this.translations.default.order)),this.translations.default.order=bcv_utils.shallow_clone(this.translations[s].order)),"default"!==s&&null!=this.translations[s].chapters)for(e of Object.keys(this.translations[s].chapters||{}))a=this.translations[s].chapters[e],null==this.translations.alternates.default.chapters[e]&&(this.translations.alternates.default.chapters[e]=bcv_utils.shallow_clone_book_data(this.translations.default.chapters[e])),this.translations.default.chapters[e]=bcv_utils.shallow_clone_book_data(a);return this.options.versification_system=s,this.include_apocrypha(this.options.include_apocrypha),this}case_sensitive(s){return null==s||"none"!==s&&"books"!==s||s===this.options.case_sensitive||(this.options.case_sensitive=s,this.regexps.books=this.regexps.get_books(this.options.include_apocrypha,s)),this}translation_info(s){let e;null==s&&(s="default"),null!=s&&null!=(null!=this.translations.aliases[s]?this.translations.aliases[s].alias:void 0)&&(s=this.translations.aliases[s].alias),null!=s&&null!=this.translations[s]||(s="default");const a=this.options.versification_system;s!==a&&this.versification_system(s);const t={alias:s,books:[],chapters:{},order:bcv_utils.shallow_clone(this.translations.default.order)};for(e of Object.keys(this.translations.default.chapters||{})){var r=this.translations.default.chapters[e];t.chapters[e]=bcv_utils.shallow_clone_book_data(r)}for(e of Object.keys(t.order||{})){var n=t.order[e];t.books[n-1]=e}return s!==a&&this.versification_system(a),t}replace_control_characters(s){return s=(s=(s=s.replace(this.regexps.control," ")).replace(/\uFF1A/g,":")).replace(/\uFF1B/g,";"),"replace"===this.options.non_latin_digits_strategy&&(s=(s=(s=(s=(s=(s=(s=(s=(s=(s=s.replace(/[٠۰߀०০੦૦୦0౦೦൦๐໐༠၀႐០᠐᥆᧐᪀᪐᭐᮰᱀᱐꘠꣐꤀꧐꩐꯰0]/g,"0")).replace(/[١۱߁१১੧૧୧௧౧೧൧๑໑༡၁႑១᠑᥇᧑᪁᪑᭑᮱᱁᱑꘡꣑꤁꧑꩑꯱1]/g,"1")).replace(/[٢۲߂२২੨૨୨௨౨೨൨๒໒༢၂႒២᠒᥈᧒᪂᪒᭒᮲᱂᱒꘢꣒꤂꧒꩒꯲2]/g,"2")).replace(/[٣۳߃३৩੩૩୩௩౩೩൩๓໓༣၃႓៣᠓᥉᧓᪃᪓᭓᮳᱃᱓꘣꣓꤃꧓꩓꯳3]/g,"3")).replace(/[٤۴߄४৪੪૪୪௪౪೪൪๔໔༤၄႔៤᠔᥊᧔᪄᪔᭔᮴᱄᱔꘤꣔꤄꧔꩔꯴4]/g,"4")).replace(/[٥۵߅५৫੫૫୫௫౫೫൫๕໕༥၅႕៥᠕᥋᧕᪅᪕᭕᮵᱅᱕꘥꣕꤅꧕꩕꯵5]/g,"5")).replace(/[٦۶߆६৬੬૬୬௬౬೬൬๖໖༦၆႖៦᠖᥌᧖᪆᪖᭖᮶᱆᱖꘦꣖꤆꧖꩖꯶6]/g,"6")).replace(/[٧۷߇७৭੭૭୭௭౭೭൭๗໗༧၇႗៧᠗᥍᧗᪇᪗᭗᮷᱇᱗꘧꣗꤇꧗꩗꯷7]/g,"7")).replace(/[٨۸߈८৮੮૮୮௮౮೮൮๘໘༨၈႘៨᠘᥎᧘᪈᪘᭘᮸᱈᱘꘨꣘꤈꧘꩘꯸8]/g,"8")).replace(/[٩۹߉९৯੯૯୯௯౯೯൯๙໙༩၉႙៩᠙᥏᧙᪉᪙᭙᮹᱉᱙꘩꣙꤉꧙꩙꯹9]/g,"9")),s}match_books(s){const e=[];for(var a of Array.from(this.regexps.books)){var t=!1;if(s=s.replace(a.regexp,(function(s,r,n){t=!0,e.push({value:n,parsed:a.osis,type:"book"});const o=null!=a.extra?`/${a.extra}`:"";return`${r}${e.length-1}${o}`})),!0===t&&/^[\s\x1f\d:.,;\-\u2013\u2014]+$/.test(s))break}return[s=s.replace(this.regexps.translations,(function(s){return e.push({value:s,parsed:s.toLowerCase(),type:"translation"}),`${e.length-1}`})),this.get_book_indices(e,s)]}get_book_indices(s,e){let a,t=0;const r=new RegExp("([\\x1f\\x1e])(\\d+)(?:/\\d+)?\\1","g");for(;a=r.exec(e);)s[a[2]].start_index=a.index+t,t+=s[a[2]].value.length-a[0].length;return s}match_passages(s){let e,a=[],t={};for(;e=this.regexps.escaped_passage.exec(s);){let p;var[r,n,o]=Array.from(e),i=n.length;if(e.index+=r.length-i,/\s[2-9]\d\d\s*$|\s\d{4,}\s*$/.test(n)&&(n=n.replace(/\s+\d+\s*$/,"")),/[\d\x1f\x1e)]$/.test(n)||(n=this.replace_match_end(n)),"delete"===this.options.captive_end_digits_strategy){var x=e.index+n.length;s.length>x&&/^\w/.test(s.substr(x,1))&&(n=n.replace(/[\s*]+\d+$/,"")),n=n.replace(/(\x1e[)\]]?)[\s*]*\d+$/,"$1")}var u=""===(n=n.replace(/[A-Z]+/g,(s=>s.toLowerCase()))).substr(0,1)?0:n.split("")[0].length,l={value:grammar.parse(n,{punctuation_strategy:this.options.punctuation_strategy}),type:"base",start_index:this.passage.books[o].start_index-u,match:n};"full"===this.options.book_alone_strategy&&"include"===this.options.book_range_strategy&&"b"===l.value[0].type&&(1===l.value.length||l.value.length>1&&"translation_sequence"===l.value[1].type)&&0===u&&(1===this.passage.books[o].parsed.length||this.passage.books[o].parsed.length>1&&"translation"===this.passage.books[o].parsed[1].type)&&/^[234]/.test(this.passage.books[o].parsed[0])&&this.create_book_range(s,l,o),[p,t]=Array.from(this.passage.handle_obj(l)),a=a.concat(p);var c=this.adjust_regexp_end(p,i,n.length);c>0&&(this.regexps.escaped_passage.lastIndex-=c)}return[a,t]}adjust_regexp_end(s,e,a){let t=0;return s.length>0?t=e-s[s.length-1].indices[1]-1:e!==a&&(t=e-a),t}replace_match_end(s){let e,a=s.length;for(;e=this.regexps.match_end_split.exec(s);)a=e.index+e[0].length;return a<s.length&&(s=s.substr(0,a)),s}create_book_range(s,e,a){const t=[bcv_parser.prototype.regexps.first,bcv_parser.prototype.regexps.second,bcv_parser.prototype.regexps.third],r=parseInt(this.passage.books[a].parsed[0].substr(0,1),10);for(let i=1,x=r,u=1<=x;u?i<x:i>x;u?i++:i--){var n=i===r-1?bcv_parser.prototype.regexps.range_and:bcv_parser.prototype.regexps.range_only,o=s.match(new RegExp(`(?:^|\\W)(${t[i-1]}\\s*${n}\\s*)\\x1f${a}\\x1f`,"i"));if(null!=o)return this.add_book_range_object(e,o,i)}return!1}add_book_range_object(s,e,a){const{length:t}=e[1];if(s.value[0]={type:"b_range_pre",value:[{type:"b_pre",value:a.toString(),indices:[e.index,e.index+t]},s.value[0]],indices:[0,s.value[0].indices[1]+t]},s.value[0].value[1].indices[0]+=t,s.value[0].value[1].indices[1]+=t,s.start_index-=t,s.match=e[1]+s.match,1!==s.value.length)return(()=>{const e=[];for(let a=1,r=s.value.length,n=1<=r;n?a<r:a>r;n?a++:a--)null!=s.value[a].value&&(null!=(null!=s.value[a].value[0]?s.value[a].value[0].indices:void 0)&&(s.value[a].value[0].indices[0]+=t,s.value[a].value[0].indices[1]+=t),s.value[a].indices[0]+=t,e.push(s.value[a].indices[1]+=t));return e})()}osis(){const s=[];for(var e of Array.from(this.parsed_entities()))e.osis.length>0&&s.push(e.osis);return s.join(",")}osis_and_translations(){const s=[];for(var e of Array.from(this.parsed_entities()))e.osis.length>0&&s.push([e.osis,e.translations.join(",")]);return s}osis_and_indices(){const s=[];for(var e of Array.from(this.parsed_entities()))if(e.osis.length>0){const a={osis:e.osis,translations:e.translations,indices:e.indices};null!=e.osises&&(a.osises=e.osises),s.push(a)}return s}parsed_entities(){let s=[];for(let v=0,d=this.entities.length,b=0<=d;b?v<d:v>d;b?v++:v--){var e=this.entities[v];if(e.type&&"translation_sequence"===e.type&&s.length>0&&v===s[s.length-1].entity_id+1&&(s[s.length-1].indices[1]=e.absolute_indices[1]),null!=e.passages&&!("b"===e.type&&"ignore"===this.options.book_alone_strategy||"b_range"===e.type&&"ignore"===this.options.book_range_strategy||"context"===e.type)){var a=[],t=null;if(null!=e.passages[0].translations)for(var r of Array.from(e.passages[0].translations)){var n=(null!=r.osis?r.osis.length:void 0)>0?r.osis:"";null==t&&(t=r.alias),a.push(n)}else a=[""],t="default";for(var o=[],i=[],{length:x}=e.passages,u=0,l=u,c=x,p=0<=c;p?u<c:u>c;p?u++:u--,l=u){var _=e.passages[l];null==_.type&&(_.type=e.type),!1===_.valid.valid&&("ignore"===this.options.invalid_sequence_strategy&&"sequence"===e.type&&this.snap_sequence("ignore",e,o,l,x),"ignore"===this.options.invalid_passage_strategy)||("b"!==_.type&&"b_range"!==_.type||"ignore"!==this.options.book_sequence_strategy||"sequence"!==e.type?("b_range_start"!==_.type&&"range_end_b"!==_.type||"ignore"!==this.options.book_range_strategy||this.snap_range(e,l),null==_.absolute_indices&&(_.absolute_indices=e.absolute_indices),"separate-chapters"===this.options.consecutive_combination_strategy&&_.start.c!==_.end.c?o.push({osis:_.valid.valid?this.to_osis(_.start,_.end,t):"",osises:this.get_osises_by_chapter({osis:"",start:_.start,end:_.end},t),type:_.type,indices:_.absolute_indices,translations:a,start:_.start,end:_.end,enclosed_indices:_.enclosed_absolute_indices,entity_id:v,entities:[_]}):o.push({osis:_.valid.valid?this.to_osis(_.start,_.end,t):"",type:_.type,indices:_.absolute_indices,translations:a,start:_.start,end:_.end,enclosed_indices:_.enclosed_absolute_indices,entity_id:v,entities:[_]})):this.snap_sequence("book",e,o,l,x))}if(0!==o.length||0!==i.length){if("combine"!==this.options.consecutive_combination_strategy&&"separate-chapters"!==this.options.consecutive_combination_strategy||(o.length>1&&(o=this.combine_consecutive_passages(o,t)),o=o.concat(i).sort(((s,e)=>s.indices[0]-e.indices[0]))),"separate-chapters"===this.options.consecutive_combination_strategy)for(g of Array.from(o)){if(0===g.osis.length)continue;const s=this.get_osises_by_chapter(g,t);s.length>1&&(g.osises=s)}if("separate"===this.options.sequence_combination_strategy)s=s.concat(o);else{if("separate-chapters"===this.options.consecutive_combination_strategy&&"sequence"===e.type){const e=this.group_osises_by_semicolon(o);if(e.length>1){for(const t of Array.from(e)){if(0===t.length)continue;if(t.length>1){for(g of Array.from(t)){if(0===g.osis.length)continue;const e={osis:g.osis,indices:g.indices,translations:a,entity_id:v,entities:[g]};null!=g.osises&&(e.osises=g.osises),s.push(e)}continue}const e=t.length-1,r=[t[0].indices[0],t[e].indices[1]];null!=t[e].enclosed_indices&&t[e].enclosed_indices[1]>=0&&(r[1]=t[e].enclosed_indices[1]);const n=[];let o=[];for(g of Array.from(t))g.osis.length>0&&n.push(g.osis),null!=g.osises&&(o=o.concat(g.osises));const i={osis:n.join(","),indices:r,translations:a,entity_id:v,entities:t};o.length>0&&(i.osises=o),s.push(i)}continue}}var g,h=[],f=o.length-1;for(g of(null!=o[f].enclosed_indices&&o[f].enclosed_indices[1]>=0&&(e.absolute_indices[1]=o[f].enclosed_indices[1]),Array.from(o)))g.osis.length>0&&h.push(g.osis);let t=[];if("separate-chapters"===this.options.consecutive_combination_strategy)for(g of Array.from(o))null!=g.osises&&(t=t.concat(g.osises));const r={osis:h.join(","),indices:e.absolute_indices,translations:a,entity_id:v,entities:o};t.length>0&&(r.osises=t),s.push(r)}}}}return s}to_osis(s,e,a){let t;null==e.c&&null==e.v&&s.b===e.b&&null==s.c&&null==s.v&&"first_chapter"===this.options.book_alone_strategy&&(e.c=1);const r={start:"",end:""};if(null==s.c&&(s.c=1),null==s.v&&(s.v=1),null==e.c&&(this.options.passage_existence_strategy.indexOf("c")>=0||null!=this.passage.translations[a].chapters[e.b]&&1===bcv_utils.get_book_chapter_count(this.passage.translations[a].chapters[e.b])?e.c=bcv_utils.get_book_chapter_count(this.passage.translations[a].chapters[e.b]):e.c=999),null==e.v){const s=bcv_utils.get_book_verse_count(this.passage.translations[a].chapters[e.b],e.c);null!=s&&this.options.passage_existence_strategy.indexOf("v")>=0?e.v=s:e.v=999}return this.options.include_apocrypha&&"b"===this.options.ps151_strategy&&(151===s.c&&"Ps"===s.b||151===e.c&&"Ps"===e.b)&&this.fix_ps151(s,e,a),"b"===this.options.osis_compaction_strategy&&1===s.c&&1===s.v&&(999===e.c&&999===e.v||e.c===bcv_utils.get_book_chapter_count(this.passage.translations[a].chapters[e.b])&&this.options.passage_existence_strategy.indexOf("c")>=0&&(999===e.v||e.v===bcv_utils.get_book_verse_count(this.passage.translations[a].chapters[e.b],e.c)&&this.options.passage_existence_strategy.indexOf("v")>=0))?(r.start=s.b,r.end=e.b):this.options.osis_compaction_strategy.length<=2&&1===s.v&&(999===e.v||e.v===bcv_utils.get_book_verse_count(this.passage.translations[a].chapters[e.b],e.c)&&this.options.passage_existence_strategy.indexOf("v")>=0)?(r.start=s.b+"."+s.c.toString(),r.end=e.b+"."+e.c.toString()):(r.start=s.b+"."+s.c.toString()+"."+s.v.toString(),r.end=e.b+"."+e.c.toString()+"."+e.v.toString()),t=r.start===r.end?r.start:r.start+"-"+r.end,null!=s.extra&&(t=s.extra+","+t),null!=e.extra&&(t+=","+e.extra),t}get_osises_by_chapter(s,e){if(null==s||null==s.start||null==s.end)return[];if(null==s.start.b||null==s.end.b||null==s.start.c||null==s.end.c)return null!=s.osis&&s.osis.length>0?[s.osis]:[];if(s.start.b!==s.end.b||s.start.c===s.end.c)return null!=s.osis&&s.osis.length>0?[s.osis]:[];const a=[];for(let t=s.start.c,r=s.end.c,n=s.start.c<=r;n?t<=r:t>=r;n?t++:t--){const r=t===s.start.c?s.start.v:1,n=t===s.end.c?s.end.v:bcv_utils.get_book_verse_count(this.translations[e].chapters[s.start.b],t),o={b:s.start.b,c:t,v:"bcv"===s.start.type?r:null,type:s.start.type},i={b:s.end.b,c:t,v:"bcv"===s.start.type?n:null,type:s.start.type};a.push(this.to_osis(o,i,e))}return a}get_separator_between(s,e){if(null==this.s||null==s||null==e)return"";const a=s[1],t=e[0];return t<=a?"":this.s.slice(a,t)}has_semicolon_separator(s,e){const a=this.get_separator_between(s.indices,e.indices);return/[;;]/.test(a)}group_osises_by_semicolon(s){const e=[];let a=[];for(const t of Array.from(s))0!==a.length&&this.has_semicolon_separator(a[a.length-1],t)?(e.push(a),a=[t]):a.push(t);return a.length>0&&e.push(a),e}fix_ps151(s,e,a){return"default"!==a&&null==(null!=this.translations[a]?this.translations[a].chapters.Ps151:void 0)&&this.passage.promote_book_to_translation("Ps151",a),151===s.c&&"Ps"===s.b?151===e.c&&"Ps"===e.b?(s.b="Ps151",s.c=1,e.b="Ps151",e.c=1):(s.extra=this.to_osis({b:"Ps151",c:1,v:s.v},{b:"Ps151",c:1,v:bcv_utils.get_book_verse_count(this.passage.translations[a].chapters.Ps151,1)},a),s.b="Prov",s.c=1,s.v=1):(e.extra=this.to_osis({b:"Ps151",c:1,v:1},{b:"Ps151",c:1,v:e.v},a),e.c=150,e.v=bcv_utils.get_book_verse_count(this.passage.translations[a].chapters.Ps,150))}combine_consecutive_passages(s,e){const a=[];let t={};const r=s.length-1;let n=-1,o=!1;for(let l=0,c=r,p=0<=c;p?l<=c:l>=c;p?l++:l--){var i=s[l];if(i.osis.length>0){var x=a.length-1,u=!1;if(x>=0&&this.has_semicolon_separator(a[x],i)){a.push(i),t={b:i.end.b,c:i.end.c,v:i.end.v};continue}i.enclosed_indices[0]!==n&&(n=i.enclosed_indices[0]),n>=0&&(l===r||s[l+1].enclosed_indices[0]!==i.enclosed_indices[0])&&(u=!0,o=!0),this.is_verse_consecutive(t,i.start,e)?(a[x].end=i.end,a[x].is_enclosed_last=u,a[x].indices[1]=i.indices[1],a[x].enclosed_indices[1]=i.enclosed_indices[1],a[x].osis=this.to_osis(a[x].start,i.end,e)):a.push(i),t={b:i.end.b,c:i.end.c,v:i.end.v}}else a.push(i),t={}}return o&&this.snap_enclosed_indices(a),a}snap_enclosed_indices(s){for(var e of Array.from(s))null!=e.is_enclosed_last&&(e.enclosed_indices[0]<0&&e.is_enclosed_last&&(e.indices[1]=e.enclosed_indices[1]),delete e.is_enclosed_last);return s}is_verse_consecutive(s,e,a){if(null==s.b)return!1;const t=null!=this.passage.translations[a].order?this.passage.translations[a].order:this.passage.translations.default.order;if(s.b===e.b){if(s.c===e.c){if(s.v===e.v-1)return!0}else if(1===e.v&&s.c===e.c-1&&s.v===bcv_utils.get_book_verse_count(this.passage.translations[a].chapters[s.b],s.c))return!0}else if(1===e.c&&1===e.v&&t[s.b]===t[e.b]-1&&s.c===bcv_utils.get_book_chapter_count(this.passage.translations[a].chapters[s.b])&&s.v===bcv_utils.get_book_verse_count(this.passage.translations[a].chapters[s.b],s.c))return!0;return!1}snap_range(s,e){let a,t,r;"b_range_start"===s.type||"sequence"===s.type&&"b_range_start"===s.passages[e].type?(a=1,t="end",r="b_range_start"):(a=0,t="start",r="range_end_b");const n="end"===t?"start":"end";for(var o of Object.keys(s.passages[e][n]||{}))s.passages[e][n][o]=s.passages[e][t][o];if("sequence"===s.type){e>=s.value.length&&(e=s.value.length-1);const a=this.passage.pluck(r,s.value[e]);if(null!=a){const t=this.snap_range(a,0);0===e?s.absolute_indices[0]=t.absolute_indices[0]:s.absolute_indices[1]=t.absolute_indices[1]}}else s.original_type=s.type,s.type=s.value[a].type,s.absolute_indices=[s.value[a].absolute_indices[0],s.value[a].absolute_indices[1]];return s}snap_sequence(s,e,a,t,r){const n=e.passages[t];return n.absolute_indices[0]===e.absolute_indices[0]&&t<r-1&&this.get_snap_sequence_i(e.passages,t,r)!==t?(e.absolute_indices[0]=e.passages[t+1].absolute_indices[0],this.remove_absolute_indices(e.passages,t+1)):n.absolute_indices[1]===e.absolute_indices[1]&&t>0?e.absolute_indices[1]=a.length>0?a[a.length-1].indices[1]:e.passages[t-1].absolute_indices[1]:"book"===s&&t<r-1&&!this.starts_with_book(e.passages[t+1])&&(e.passages[t+1].absolute_indices[0]=n.absolute_indices[0]),e}get_snap_sequence_i(s,e,a){for(let t=e+1,r=t,n=a,o=t<=n;o?r<n:r>n;o?r++:r--){if(this.starts_with_book(s[r]))return r;if(s[r].valid.valid)return e}return e}starts_with_book(s){return"b"===s.type.substr(0,1)||("range"===s.type||"ff"===s.type)&&"b"===s.start.type.substr(0,1)}remove_absolute_indices(s,e){if(s[e].enclosed_absolute_indices[0]<0)return!1;const[a,t]=Array.from(s[e].enclosed_absolute_indices);for(var r of Array.from(s.slice(e))){if(r.enclosed_absolute_indices[0]!==a||r.enclosed_absolute_indices[1]!==t)break;r.enclosed_absolute_indices=[-1,-1]}return!0}}bcv_parser.initClass(),this.bcv_parser=bcv_parser;class bcv_passage{static initClass(){this.prototype.books=[],this.prototype.indices={},this.prototype.options={},this.prototype.translations={}}handle_array(s,e,a){for(var t of(null==e&&(e=[]),null==a&&(a={}),Array.from(s)))if(null!=t){if("stop"===t.type)break;[e,a]=Array.from(this.handle_obj(t,e,a))}return[e,a]}handle_obj(s,e,a){return null!=s.type&&null!=this[s.type]?this[s.type](s,e,a):[e,a]}b(s,e,a){let t;s.start_context=bcv_utils.shallow_clone(a),s.passages=[];const r=[];for(t of Array.from(this.books[s.value].parsed)){var n=this.validate_ref(s.start_context.translations,{b:t}),o={start:{b:t},end:{b:t},valid:n};0===s.passages.length&&n.valid?s.passages.push(o):r.push(o)}return 0===s.passages.length&&s.passages.push(r.shift()),r.length>0&&(s.passages[0].alternates=r),null!=s.start_context.translations&&(s.passages[0].translations=s.start_context.translations),null==s.absolute_indices&&(s.absolute_indices=this.get_absolute_indices(s.indices)),e.push(s),a={b:s.passages[0].start.b},null!=s.start_context.translations&&(a.translations=s.start_context.translations),[e,a]}b_range(s,e,a){return this.range(s,e,a)}b_range_pre(s,e,a){let t,r;s.start_context=bcv_utils.shallow_clone(a),s.passages=[];const n=this.pluck("b",s.value);t=this.b(n,[],a),[r]=Array.from(t[0]),a=t[1],null==s.absolute_indices&&(s.absolute_indices=this.get_absolute_indices(s.indices));const o={b:s.value[0].value+r.passages[0].start.b.substr(1),type:"b"};return s.passages=[{start:o,end:r.passages[0].end,valid:r.passages[0].valid}],null!=s.start_context.translations&&(s.passages[0].translations=s.start_context.translations),e.push(s),[e,a]}b_range_start(s,e,a){return this.range(s,e,a)}base(s,e,a){return this.indices=this.calculate_indices(s.match,s.start_index),this.handle_array(s.value,e,a)}bc(s,e,a){s.start_context=bcv_utils.shallow_clone(a),s.passages=[],this.reset_context(a,["b","c","v"]);const t=this.pluck("c",s.value).value,r=[];for(var n of Array.from(this.books[this.pluck("b",s.value).value].parsed)){var o="c",i=this.validate_ref(s.start_context.translations,{b:n,c:t}),x={start:{b:n},end:{b:n},valid:i};(i.messages.start_chapter_not_exist_in_single_chapter_book||i.messages.start_chapter_1)&&(x.valid=this.validate_ref(s.start_context.translations,{b:n,v:t}),i.messages.start_chapter_not_exist_in_single_chapter_book&&(x.valid.messages.start_chapter_not_exist_in_single_chapter_book=1),x.start.c=1,x.end.c=1,o="v"),x.start[o]=t,[x.start.c,x.start.v]=Array.from(this.fix_start_zeroes(x.valid,x.start.c,x.start.v)),null==x.start.v&&delete x.start.v,x.end[o]=x.start[o],0===s.passages.length&&x.valid.valid?s.passages.push(x):r.push(x)}return 0===s.passages.length&&s.passages.push(r.shift()),r.length>0&&(s.passages[0].alternates=r),null!=s.start_context.translations&&(s.passages[0].translations=s.start_context.translations),null==s.absolute_indices&&(s.absolute_indices=this.get_absolute_indices(s.indices)),this.set_context_from_object(a,["b","c","v"],s.passages[0].start),e.push(s),[e,a]}bc_title(s,e,a){let t,r;if(s.start_context=bcv_utils.shallow_clone(a),t=this.bc(this.pluck("bc",s.value),[],a),[r]=Array.from(t[0]),a=t[1],"Ps"!==r.passages[0].start.b.substr(0,2)&&null!=r.passages[0].alternates)for(let s=0,e=r.passages[0].alternates.length,a=0<=e;a?s<e:s>e;a?s++:s--)if("Ps"===r.passages[0].alternates[s].start.b.substr(0,2)){r.passages[0]=r.passages[0].alternates[s];break}if("Ps"!==r.passages[0].start.b.substr(0,2))return e.push(r),[e,a];this.books[this.pluck("b",r.value).value].parsed=["Ps"];let n=this.pluck("title",s.value);return null==n&&(n=this.pluck("v",s.value)),s.value[1]={type:"v",value:[{type:"integer",value:1,indices:n.indices}],indices:n.indices},s.type="bcv",this.bcv(s,e,s.start_context)}bcv(s,e,a){s.start_context=bcv_utils.shallow_clone(a),s.passages=[],this.reset_context(a,["b","c","v"]);const t=this.pluck("bc",s.value);let r=this.pluck("c",t.value).value,n=this.pluck("v",s.value).value;const o=[];for(var i of Array.from(this.books[this.pluck("b",t.value).value].parsed)){var x=this.validate_ref(s.start_context.translations,{b:i,c:r,v:n});[r,n]=Array.from(this.fix_start_zeroes(x,r,n));var u={start:{b:i,c:r,v:n},end:{b:i,c:r,v:n},valid:x};0===s.passages.length&&x.valid?s.passages.push(u):o.push(u)}return 0===s.passages.length&&s.passages.push(o.shift()),o.length>0&&(s.passages[0].alternates=o),null!=s.start_context.translations&&(s.passages[0].translations=s.start_context.translations),null==s.absolute_indices&&(s.absolute_indices=this.get_absolute_indices(s.indices)),this.set_context_from_object(a,["b","c","v"],s.passages[0].start),e.push(s),[e,a]}bv(s,e,a){let t;s.start_context=bcv_utils.shallow_clone(a);const[r,n]=Array.from(s.value);let o={indices:s.indices,value:[{type:"bc",value:[r,{type:"c",value:[{type:"integer",value:1}]}]},n]};return t=this.bcv(o,[],a),[o]=Array.from(t[0]),a=t[1],s.passages=o.passages,null==s.absolute_indices&&(s.absolute_indices=this.get_absolute_indices(s.indices)),e.push(s),[e,a]}c(s,e,a){s.start_context=bcv_utils.shallow_clone(a);let t="integer"===s.type?s.value:this.pluck("integer",s.value).value;const r=this.validate_ref(s.start_context.translations,{b:a.b,c:t});return!r.valid&&r.messages.start_chapter_not_exist_in_single_chapter_book?this.v(s,e,a):([t]=Array.from(this.fix_start_zeroes(r,t)),s.passages=[{start:{b:a.b,c:t},end:{b:a.b,c:t},valid:r}],null!=s.start_context.translations&&(s.passages[0].translations=s.start_context.translations),e.push(s),a.c=t,this.reset_context(a,["v"]),null==s.absolute_indices&&(s.absolute_indices=this.get_absolute_indices(s.indices)),[e,a])}c_psalm(s,e,a){s.type="bc";const t=parseInt(this.books[s.value].value.match(/^\d+/)[0],10);return s.value=[{type:"b",value:s.value,indices:s.indices},{type:"c",value:[{type:"integer",value:t,indices:s.indices}],indices:s.indices}],this.bc(s,e,a)}c_title(s,e,a){if(s.start_context=bcv_utils.shallow_clone(a),"Ps"!==a.b)return this.c(s.value[0],e,a);const t=this.pluck("title",s.value);return s.value[1]={type:"v",value:[{type:"integer",value:1,indices:t.indices}],indices:t.indices},s.type="cv",this.cv(s,e,s.start_context)}cv(s,e,a){s.start_context=bcv_utils.shallow_clone(a);let t=this.pluck("c",s.value).value,r=this.pluck("v",s.value).value;const n=this.validate_ref(s.start_context.translations,{b:a.b,c:t,v:r});return[t,r]=Array.from(this.fix_start_zeroes(n,t,r)),s.passages=[{start:{b:a.b,c:t,v:r},end:{b:a.b,c:t,v:r},valid:n}],null!=s.start_context.translations&&(s.passages[0].translations=s.start_context.translations),e.push(s),a.c=t,a.v=r,null==s.absolute_indices&&(s.absolute_indices=this.get_absolute_indices(s.indices)),[e,a]}cb_range(s,e,a){s.type="range";const[t,r,n]=Array.from(s.value);return s.value=[{type:"bc",value:[t,r],indices:s.indices},n],n.indices[1]=s.indices[1],this.range(s,e,a)}context(s,e,a){for(var t of(s.start_context=bcv_utils.shallow_clone(a),s.passages=[],Object.keys(this.books[s.value].context||{})))a[t]=this.books[s.value].context[t];return e.push(s),[e,a]}cv_psalm(s,e,a){s.start_context=bcv_utils.shallow_clone(a),s.type="bcv";const[t,r]=Array.from(s.value),n=this.c_psalm(t,[],s.start_context),[o]=Array.from(n[0]);return s.value=[o,r],this.bcv(s,e,a)}ff(s,e,a){let t;return s.start_context=bcv_utils.shallow_clone(a),s.value.push({type:"integer",indices:s.indices,value:999}),t=this.range(s,[],s.start_context),[s]=Array.from(t[0]),a=t[1],s.value[0].indices=s.value[1].indices,s.value[0].absolute_indices=s.value[1].absolute_indices,s.value.pop(),null!=s.passages[0].valid.messages.end_verse_not_exist&&delete s.passages[0].valid.messages.end_verse_not_exist,null!=s.passages[0].valid.messages.end_chapter_not_exist&&delete s.passages[0].valid.messages.end_chapter_not_exist,null!=s.passages[0].end.original_c&&delete s.passages[0].end.original_c,e.push(s),[e,a]}integer_title(s,e,a){return s.start_context=bcv_utils.shallow_clone(a),"Ps"!==a.b?this.integer(s.value[0],e,a):(s.value[0]={type:"c",value:[s.value[0]],indices:[s.value[0].indices[0],s.value[0].indices[1]]},s.value[1].type="v",s.value[1].original_type="title",s.value[1].value=[{type:"integer",value:1,indices:s.value[1].value.indices}],s.type="cv",this.cv(s,e,s.start_context))}integer(s,e,a){return null!=a.v?this.v(s,e,a):this.c(s,e,a)}next_v(s,e,a){let t,r;s.start_context=bcv_utils.shallow_clone(a);let n=this.pluck_last_recursively("integer",s.value);if(null==n&&(n={value:1}),s.value.push({type:"integer",indices:s.indices,value:n.value+1}),t=this.range(s,[],s.start_context),[r]=Array.from(t[0]),a=t[1],null!=r.passages[0].valid.messages.end_verse_not_exist&&null==r.passages[0].valid.messages.start_verse_not_exist&&null==r.passages[0].valid.messages.start_chapter_not_exist&&null!=a.c){let e;s.value.pop(),s.value.push({type:"cv",indices:s.indices,value:[{type:"c",value:[{type:"integer",value:a.c+1,indices:s.indices}],indices:s.indices},{type:"v",value:[{type:"integer",value:1,indices:s.indices}],indices:s.indices}]}),e=this.range(s,[],s.start_context),[r]=Array.from(e[0]),a=e[1]}return r.value[0].indices=r.value[1].indices,r.value[0].absolute_indices=r.value[1].absolute_indices,r.value.pop(),null!=r.passages[0].valid.messages.end_verse_not_exist&&delete r.passages[0].valid.messages.end_verse_not_exist,null!=r.passages[0].valid.messages.end_chapter_not_exist&&delete r.passages[0].valid.messages.end_chapter_not_exist,null!=r.passages[0].end.original_c&&delete r.passages[0].end.original_c,e.push(r),[e,a]}sequence(s,e,a){for(var t of(s.start_context=bcv_utils.shallow_clone(a),s.passages=[],Array.from(s.value))){var r,n;for(var o of(r=this.handle_array(t,[],a),[n]=Array.from(r[0]),a=r[1],Array.from(n.passages)))null==o.type&&(o.type=n.type),null==o.absolute_indices&&(o.absolute_indices=n.absolute_indices),null!=n.start_context.translations&&(o.translations=n.start_context.translations),o.enclosed_absolute_indices="sequence_post_enclosed"===n.type?n.absolute_indices:[-1,-1],s.passages.push(o)}return null==s.absolute_indices&&(s.passages.length>0&&"sequence"===s.type?s.absolute_indices=[s.passages[0].absolute_indices[0],s.passages[s.passages.length-1].absolute_indices[1]]:s.absolute_indices=this.get_absolute_indices(s.indices)),e.push(s),[e,a]}sequence_post_enclosed(s,e,a){return this.sequence(s,e,a)}v(s,e,a){let t,r="integer"===s.type?s.value:this.pluck("integer",s.value).value;s.start_context=bcv_utils.shallow_clone(a);const n=null!=a.c?a.c:1,o=this.validate_ref(s.start_context.translations,{b:a.b,c:n,v:r});return[t,r]=Array.from(this.fix_start_zeroes(o,0,r)),s.passages=[{start:{b:a.b,c:n,v:r},end:{b:a.b,c:n,v:r},valid:o}],null!=s.start_context.translations&&(s.passages[0].translations=s.start_context.translations),null==s.absolute_indices&&(s.absolute_indices=this.get_absolute_indices(s.indices)),e.push(s),a.v=r,[e,a]}range(s,e,a){let t,r;s.start_context=bcv_utils.shallow_clone(a);let[n,o]=Array.from(s.value);if(t=this.handle_obj(n,[],a),[n]=Array.from(t[0]),a=t[1],"v"===o.type&&("bc"===n.type&&!__guard__(__guard__(__guard__(null!=n.passages?n.passages[0]:void 0,(s=>s.valid)),(s=>s.messages)),(s=>s.start_chapter_not_exist_in_single_chapter_book))||"c"===n.type)&&"verse"===this.options.end_range_digits_strategy)return s.value[0]=n,this.range_change_integer_end(s,e);r=this.handle_obj(o,[],a),[o]=Array.from(r[0]),a=r[1],s.value=[n,o],s.indices=[n.indices[0],o.indices[1]],delete s.absolute_indices;const i={b:n.passages[0].start.b,c:n.passages[0].start.c,v:n.passages[0].start.v,type:n.type},x={b:o.passages[0].end.b,c:o.passages[0].end.c,v:o.passages[0].end.v,type:o.type};o.passages[0].valid.messages.start_chapter_is_zero&&(x.c=0),o.passages[0].valid.messages.start_verse_is_zero&&(x.v=0);const u=this.validate_ref(s.start_context.translations,i,x);if(!u.valid)return this.range_handle_invalid(u,s,n,i,o,x,e);{const[a,t]=Array.from(this.range_handle_valid(u,s,n,i,o,x,e));if(a)return t}return null==s.absolute_indices&&(s.absolute_indices=this.get_absolute_indices(s.indices)),s.passages=[{start:i,end:x,valid:u}],null!=s.start_context.translations&&(s.passages[0].translations=s.start_context.translations),"b"===i.type?"b"===x.type?s.type="b_range":s.type="b_range_start":"b"===x.type&&(s.type="range_end_b"),e.push(s),[e,a]}range_change_end(s,e,a){let t;const[r,n]=Array.from(s.value);return"integer"===n.type?(n.original_value=n.value,n.value=a):"v"===n.type?(t=this.pluck("integer",n.value),t.original_value=t.value,t.value=a):"cv"===n.type&&(t=this.pluck("c",n.value),t.original_value=t.value,t.value=a),this.handle_obj(s,e,s.start_context)}range_change_integer_end(s,e){const[a,t]=Array.from(s.value);return null==s.original_type&&(s.original_type=s.type),null==s.original_value&&(s.original_value=[a,t]),s.type="integer"===a.type?"cv":a.type+"v","integer"===a.type&&(s.value[0]={type:"c",value:[a],indices:a.indices}),"integer"===t.type&&(s.value[1]={type:"v",value:[t],indices:t.indices}),this.handle_obj(s,e,s.start_context)}range_check_new_end(s,e,a,t){let r=0,n=null;if(t.messages.end_chapter_before_start?n="c":t.messages.end_verse_before_start&&(n="v"),null!=n&&(r=this.range_get_new_end_value(e,a,t,n)),r>0){const e={b:a.b,c:a.c,v:a.v};e[n]=r;this.validate_ref(s,e).valid||(r=0)}return r}range_end_b(s,e,a){return this.range(s,e,a)}range_get_new_end_value(s,e,a,t){let r=0;return"c"===t&&a.messages.end_chapter_is_zero||"v"===t&&a.messages.end_verse_is_zero||(s[t]>=10&&e[t]<10&&s[t]-10*Math.floor(s[t]/10)<e[t]?r=e[t]+10*Math.floor(s[t]/10):s[t]>=100&&e[t]<100&&s[t]-100<e[t]&&(r=e[t]+100)),r}range_handle_invalid(s,e,a,t,r,n,o){if(!1===s.valid&&(s.messages.end_chapter_before_start||s.messages.end_verse_before_start)&&("integer"===r.type||"v"===r.type)||!1===s.valid&&s.messages.end_chapter_before_start&&"cv"===r.type){const a=this.range_check_new_end(e.start_context.translations,t,n,s);if(a>0)return this.range_change_end(e,o,a)}if("verse"===this.options.end_range_digits_strategy&&null==t.v&&("integer"===r.type||"v"===r.type)){const s="v"===r.type?this.pluck("integer",r.value):r.value;if(this.validate_ref(e.start_context.translations,{b:t.b,c:t.c,v:s}).valid)return this.range_change_integer_end(e,o)}return null==e.original_type&&(e.original_type=e.type),e.type="sequence",[e.original_value,e.value]=Array.from([[a,r],[[a],[r]]]),this.sequence(e,o,e.start_context)}range_handle_valid(s,e,a,t,r,n,o){if(s.messages.end_chapter_not_exist&&"verse"===this.options.end_range_digits_strategy&&null==t.v&&("integer"===r.type||"v"===r.type)&&this.options.passage_existence_strategy.indexOf("v")>=0){const s="v"===r.type?this.pluck("integer",r.value):r.value;if(this.validate_ref(e.start_context.translations,{b:t.b,c:t.c,v:s}).valid)return[!0,this.range_change_integer_end(e,o)]}return this.range_validate(s,t,n,e),[!1,null]}range_validate(s,e,a,t){return s.messages.end_chapter_not_exist||s.messages.end_chapter_not_exist_in_single_chapter_book?(a.original_c=a.c,a.c=s.messages.end_chapter_not_exist?s.messages.end_chapter_not_exist:s.messages.end_chapter_not_exist_in_single_chapter_book,null!=a.v&&(a.v=this.validate_ref(t.start_context.translations,{b:a.b,c:a.c,v:999}).messages.end_verse_not_exist,delete s.messages.end_verse_is_zero)):s.messages.end_verse_not_exist&&(a.original_v=a.v,a.v=s.messages.end_verse_not_exist),s.messages.end_verse_is_zero&&"allow"!==this.options.zero_verse_strategy&&(a.v=s.messages.end_verse_is_zero),s.messages.end_chapter_is_zero&&(a.c=s.messages.end_chapter_is_zero),[e.c,e.v]=Array.from(this.fix_start_zeroes(s,e.c,e.v)),!0}translation_sequence(s,e,a){s.start_context=bcv_utils.shallow_clone(a);const t=[];for(var r of(t.push({translation:this.books[s.value[0].value].parsed}),Array.from(s.value[1])))null!=(r=this.books[this.pluck("translation",r).value].parsed)&&t.push({translation:r});for(var n of Array.from(t))null!=this.translations.aliases[n.translation]?(n.alias=this.translations.aliases[n.translation].alias,n.osis=this.translations.aliases[n.translation].osis||n.translation.toUpperCase()):(n.alias="default",n.osis=n.translation.toUpperCase());return e.length>0&&(a=this.translation_sequence_apply(e,t)),null==s.absolute_indices&&(s.absolute_indices=this.get_absolute_indices(s.indices)),e.push(s),this.reset_context(a,["translations"]),[e,a]}translation_sequence_apply(s,e){let a,t=0;for(let e=s.length-1,a=e,r=e<=0;r?a<=0:a>=0;r?a++:a--)if(null!=s[a].original_type&&(s[a].type=s[a].original_type),null!=s[a].original_value&&(s[a].value=s[a].original_value),"translation_sequence"===s[a].type){t=a+1;break}if(t<s.length){let r;s[t].start_context.translations=e,[r,a]=Array.from(this.handle_array(s.slice(t),[],s[t].start_context))}else a=bcv_utils.shallow_clone(s[s.length-1].start_context);return a}pluck(s,e){for(var a of Array.from(e))if(null!=a&&null!=a.type&&a.type===s)return"c"===s||"v"===s?this.pluck("integer",a.value):a;return null}pluck_last_recursively(s,e){for(let r=e.length-1;r>=0;r--){var a=e[r];if(null!=a&&null!=a.type){if(a.type===s)return this.pluck(s,[a]);var t=this.pluck_last_recursively(s,a.value);if(null!=t)return t}}return null}set_context_from_object(s,e,a){return(()=>{const t=[];for(var r of Array.from(e))null!=a[r]&&t.push(s[r]=a[r]);return t})()}reset_context(s,e){return Array.from(e).map((e=>delete s[e]))}fix_start_zeroes(s,e,a){return s.messages.start_chapter_is_zero&&"upgrade"===this.options.zero_chapter_strategy&&(e=s.messages.start_chapter_is_zero),s.messages.start_verse_is_zero&&"upgrade"===this.options.zero_verse_strategy&&(a=s.messages.start_verse_is_zero),[e,a]}calculate_indices(s,e){let a,t="book";const r=[];let n=0;e=parseInt(e,10);let o=[s];for(var i of["",""]){var x=[];for(a of Array.from(o))x=x.concat(a.split(i));o=x}for(a of Array.from(o)){var u;t="book"===t?"rest":"book";var l=a.length;0!==l&&("book"===t?(a=a.replace(/\/\d+$/,""),u=n+l,r.length>0&&r[r.length-1].index===e?r[r.length-1].end=u:r.push({start:n,end:u,index:e}),n+=l+2,e=this.books[a].start_index+this.books[a].value.length-n,r.push({start:u+1,end:u+1,index:e})):(u=n+l-1,r.length>0&&r[r.length-1].index===e?r[r.length-1].end=u:r.push({start:n,end:u,index:e}),n+=l))}return r}get_absolute_indices(...s){const[e,a]=Array.from(s[0]);let t=null,r=null;for(var n of Array.from(this.indices))if(null===t&&n.start<=e&&e<=n.end&&(t=e+n.index),n.start<=a&&a<=n.end){r=a+n.index+1;break}return[t,r]}validate_ref(s,e,a){null!=s&&s.length>0||(s=[{translation:"default",osis:"",alias:"default"}]);let t=!1;const r={};for(var n of Array.from(s))if(null==n.alias&&(n.alias="default"),null!=n.alias){null==this.translations.aliases[n.alias]&&(n.alias="default",null==r.translation_unknown&&(r.translation_unknown=[]),r.translation_unknown.push(n));var[o]=Array.from(this.validate_start_ref(n.alias,e,r));a&&([o]=Array.from(this.validate_end_ref(n.alias,e,a,o,r))),!0===o&&(t=!0)}else null==r.translation_invalid&&(r.translation_invalid=[]),r.translation_invalid.push(n);return{valid:t,messages:r}}validate_start_ref(s,e,a){let t,r,n=!0;"default"!==s&&null==(null!=this.translations[s]?this.translations[s].chapters[e.b]:void 0)&&this.promote_book_to_translation(e.b,s);const o=null!=(null!=this.translations[s]?this.translations[s].order:void 0)?s:"default";if(null!=e.v&&(e.v=parseInt(e.v,10)),null!=this.translations[o].order[e.b]){if(null==e.c&&(e.c=1),e.c=parseInt(e.c,10),isNaN(e.c))return n=!1,a.start_chapter_not_numeric=!0,[n,a];0===e.c&&(a.start_chapter_is_zero=1,"error"===this.options.zero_chapter_strategy?n=!1:e.c=1),null!=e.v&&0===e.v&&(a.start_verse_is_zero=1,"error"===this.options.zero_verse_strategy?n=!1:"upgrade"===this.options.zero_verse_strategy&&(e.v=1)),t=bcv_utils.get_book_chapter_count(this.translations[s].chapters[e.b]),r=bcv_utils.get_book_verse_count(this.translations[s].chapters[e.b],e.c),e.c>0&&null!=r?null!=e.v?isNaN(e.v)?(n=!1,a.start_verse_not_numeric=!0):e.v>r&&this.options.passage_existence_strategy.indexOf("v")>=0&&(n=!1,a.start_verse_not_exist=r):1===e.c&&"verse"===this.options.single_chapter_1_strategy&&1===t&&(a.start_chapter_1=1):1!==e.c&&1===t?(n=!1,a.start_chapter_not_exist_in_single_chapter_book=1):e.c>0&&this.options.passage_existence_strategy.indexOf("c")>=0&&(n=!1,a.start_chapter_not_exist=t)}else null==e.b?(n=!1,a.start_book_not_defined=!0):(this.options.passage_existence_strategy.indexOf("b")>=0&&(n=!1),a.start_book_not_exist=!0);return[n,a]}validate_end_ref(s,e,a,t,r){const n=null!=(null!=this.translations[s]?this.translations[s].order:void 0)?s:"default";let o,i;return null!=a.c&&(a.c=parseInt(a.c,10),isNaN(a.c)?(t=!1,r.end_chapter_not_numeric=!0):0===a.c&&(r.end_chapter_is_zero=1,"error"===this.options.zero_chapter_strategy?t=!1:a.c=1)),null!=a.v&&(a.v=parseInt(a.v,10),isNaN(a.v)?(t=!1,r.end_verse_not_numeric=!0):0===a.v&&(r.end_verse_is_zero=1,"error"===this.options.zero_verse_strategy?t=!1:"upgrade"===this.options.zero_verse_strategy&&(a.v=1))),null!=this.translations[n].order[a.b]?(o=bcv_utils.get_book_chapter_count(this.translations[s].chapters[a.b]),null==a.c&&1===o&&(a.c=1),null!=this.translations[n].order[e.b]&&this.translations[n].order[e.b]>this.translations[n].order[a.b]&&(this.options.passage_existence_strategy.indexOf("b")>=0&&(t=!1),r.end_book_before_start=!0),e.b!==a.b||null==a.c||isNaN(a.c)||(null==e.c&&(e.c=1),!isNaN(parseInt(e.c,10))&&e.c>a.c?(t=!1,r.end_chapter_before_start=!0):e.c!==a.c||null==a.v||isNaN(a.v)||(null==e.v&&(e.v=1),!isNaN(parseInt(e.v,10))&&e.v>a.v&&(t=!1,r.end_verse_before_start=!0))),null==a.c||isNaN(a.c)||(i=bcv_utils.get_book_verse_count(this.translations[s].chapters[a.b],a.c),null==i&&(1===o?r.end_chapter_not_exist_in_single_chapter_book=1:a.c>0&&this.options.passage_existence_strategy.indexOf("c")>=0&&(r.end_chapter_not_exist=o))),null==a.v||isNaN(a.v)||(null==a.c&&(a.c=o),i=bcv_utils.get_book_verse_count(this.translations[s].chapters[a.b],a.c),null!=i&&a.v>i&&this.options.passage_existence_strategy.indexOf("v")>=0&&(r.end_verse_not_exist=i))):(t=!1,r.end_book_not_exist=!0),[t,r]}promote_book_to_translation(s,e){if(null==this.translations[e]&&(this.translations[e]={}),null==this.translations[e].chapters&&(this.translations[e].chapters={}),null==this.translations[e].chapters[s])return this.translations[e].chapters[s]=bcv_utils.shallow_clone_book_data(this.translations.default.chapters[s])}}function __guard__(s,e){return null!=s?e(s):void 0}bcv_passage.initClass();const bcv_utils={shallow_clone(s){if(null==s)return s;const e={};for(const a of Object.keys(s||{})){const t=s[a];e[a]=t}return e},shallow_clone_array(s){if(null==s)return s;const e=[];for(let a=0,t=s.length,r=0<=t;r?a<=t:a>=t;r?a++:a--)void 0!==s[a]&&(e[a]=s[a]);return e},shallow_clone_book_data(s){if(null==s)return s;if(Array.isArray(s))return this.shallow_clone_array(s);const e=this.shallow_clone(s);return null!=s.versesCount&&(e.versesCount=this.shallow_clone(s.versesCount)),e},get_book_chapter_count:s=>null==s?0:Array.isArray(s)?s.length:null!=s.chaptersCount?s.chaptersCount:Object.keys(s.versesCount||{}).length,get_book_verse_count:(s,e)=>null==s||null==e?null:Array.isArray(s)?s[e-1]:null==s.versesCount?null:null!=s.versesCount[e]?s.versesCount[e]:s.versesCount[String(e)],set_book_verse_count:(s,e,a)=>Array.isArray(s)?(s[e-1]=a,s):(null==s.versesCount&&(s.versesCount={}),s.versesCount[String(e)]=a,(null==s.chaptersCount||e>s.chaptersCount)&&(s.chaptersCount=e),s),delete_book_verse_count(s,e){if(null==s)return s;if(Array.isArray(s))return s.length===e?s.pop():delete s[e-1],s;if(null!=s.versesCount&&delete s.versesCount[String(e)],s.chaptersCount===e)for(;s.chaptersCount>0&&null==this.get_book_verse_count(s,s.chaptersCount);)s.chaptersCount-=1;return s}};bcv_parser.prototype.regexps.translations=RegExp("(?:(?:ERV))\\b","gi"),bcv_parser.prototype.translations={aliases:{default:{osis:"",alias:"default"}},alternates:{},default:{order:{Gen:1,Exod:2,Lev:3,Num:4,Deut:5,Josh:6,Judg:7,Ruth:8,"1Sam":9,"2Sam":10,"1Kgs":11,"2Kgs":12,"1Chr":13,"2Chr":14,Ezra:15,Neh:16,Esth:17,Job:18,Ps:19,Prov:20,Eccl:21,Song:22,Isa:23,Jer:24,Lam:25,Ezek:26,Dan:27,Hos:28,Joel:29,Amos:30,Obad:31,Jonah:32,Mic:33,Nah:34,Hab:35,Zeph:36,Hag:37,Zech:38,Mal:39,Matt:40,Mark:41,Luke:42,John:43,Acts:44,Rom:45,"1Cor":46,"2Cor":47,Gal:48,Eph:49,Phil:50,Col:51,"1Thess":52,"2Thess":53,"1Tim":54,"2Tim":55,Titus:56,Phlm:57,Heb:58,Jas:59,"1Pet":60,"2Pet":61,"1John":62,"2John":63,"3John":64,Jude:65,Rev:66,Tob:67,Jdt:68,GkEsth:69,Wis:70,Sir:71,Bar:72,PrAzar:73,Sus:74,Bel:75,SgThree:76,EpJer:77,"1Macc":78,"2Macc":79,"3Macc":80,"4Macc":81,"1Esd":82,"2Esd":83,PrMan:84},chapters:{Gen:{chaptersCount:50,versesCount:{1:31,2:25,3:24,4:26,5:32,6:22,7:24,8:22,9:29,10:32,11:32,12:20,13:18,14:24,15:21,16:16,17:27,18:33,19:38,20:18,21:34,22:24,23:20,24:67,25:34,26:35,27:46,28:22,29:35,30:43,31:54,32:33,33:20,34:31,35:29,36:43,37:36,38:30,39:23,40:23,41:57,42:38,43:34,44:34,45:28,46:34,47:31,48:22,49:33,50:26}},Exod:{chaptersCount:40,versesCount:{1:22,2:25,3:22,4:31,5:23,6:30,7:29,8:28,9:35,10:29,11:10,12:51,13:22,14:31,15:27,16:36,17:16,18:27,19:25,20:26,21:37,22:30,23:33,24:18,25:40,26:37,27:21,28:43,29:46,30:38,31:18,32:35,33:23,34:35,35:35,36:38,37:29,38:31,39:43,40:38}},Lev:{chaptersCount:27,versesCount:{1:17,2:16,3:17,4:35,5:26,6:23,7:38,8:36,9:24,10:20,11:47,12:8,13:59,14:57,15:33,16:34,17:16,18:30,19:37,20:27,21:24,22:33,23:44,24:23,25:55,26:46,27:34}},Num:{chaptersCount:36,versesCount:{1:54,2:34,3:51,4:49,5:31,6:27,7:89,8:26,9:23,10:36,11:35,12:16,13:33,14:45,15:41,16:35,17:28,18:32,19:22,20:29,21:35,22:41,23:30,24:25,25:18,26:65,27:23,28:31,29:39,30:17,31:54,32:42,33:56,34:29,35:34,36:13}},Deut:{chaptersCount:34,versesCount:{1:46,2:37,3:29,4:49,5:33,6:25,7:26,8:20,9:29,10:22,11:32,12:31,13:19,14:29,15:23,16:22,17:20,18:22,19:21,20:20,21:23,22:29,23:26,24:22,25:19,26:19,27:26,28:69,29:28,30:20,31:30,32:52,33:29,34:12}},Josh:{chaptersCount:24,versesCount:{1:18,2:24,3:17,4:24,5:15,6:27,7:26,8:35,9:27,10:43,11:23,12:24,13:33,14:15,15:63,16:10,17:18,18:28,19:51,20:9,21:45,22:34,23:16,24:33}},Judg:{chaptersCount:21,versesCount:{1:36,2:23,3:31,4:24,5:31,6:40,7:25,8:35,9:57,10:18,11:40,12:15,13:25,14:20,15:20,16:31,17:13,18:31,19:30,20:48,21:25}},Ruth:{chaptersCount:4,versesCount:{1:22,2:23,3:18,4:22}},"1Sam":{chaptersCount:31,versesCount:{1:28,2:36,3:21,4:22,5:12,6:21,7:17,8:22,9:27,10:27,11:15,12:25,13:23,14:52,15:35,16:23,17:58,18:30,19:24,20:42,21:16,22:23,23:28,24:23,25:44,26:25,27:12,28:25,29:11,30:31,31:13}},"2Sam":{chaptersCount:24,versesCount:{1:27,2:32,3:39,4:12,5:25,6:23,7:29,8:18,9:13,10:19,11:27,12:31,13:39,14:33,15:37,16:23,17:29,18:32,19:44,20:26,21:22,22:51,23:39,24:25}},"1Kgs":{chaptersCount:22,versesCount:{1:53,2:46,3:28,4:20,5:32,6:38,7:51,8:66,9:28,10:29,11:43,12:33,13:34,14:31,15:34,16:34,17:24,18:46,19:21,20:43,21:29,22:53}},"2Kgs":{chaptersCount:25,versesCount:{1:18,2:25,3:27,4:44,5:27,6:33,7:20,8:29,9:37,10:36,11:20,12:22,13:25,14:29,15:38,16:20,17:41,18:37,19:37,20:21,21:26,22:20,23:37,24:20,25:30}},"1Chr":{chaptersCount:29,versesCount:{1:54,2:55,3:24,4:43,5:41,6:66,7:40,8:40,9:44,10:14,11:47,12:40,13:14,14:17,15:29,16:43,17:27,18:17,19:19,20:8,21:30,22:19,23:32,24:31,25:31,26:32,27:34,28:21,29:30}},"2Chr":{chaptersCount:36,versesCount:{1:18,2:17,3:17,4:22,5:14,6:42,7:22,8:18,9:31,10:19,11:23,12:16,13:23,14:14,15:19,16:14,17:19,18:34,19:11,20:37,21:20,22:12,23:21,24:27,25:28,26:23,27:9,28:27,29:36,30:27,31:21,32:33,33:25,34:33,35:27,36:23}},Ezra:{chaptersCount:10,versesCount:{1:11,2:70,3:13,4:24,5:17,6:22,7:28,8:36,9:15,10:44}},Neh:{chaptersCount:13,versesCount:{1:11,2:20,3:38,4:17,5:19,6:19,7:73,8:18,9:37,10:40,11:36,12:47,13:31}},Esth:{chaptersCount:10,versesCount:{1:22,2:23,3:15,4:17,5:14,6:14,7:10,8:17,9:32,10:3}},Job:{chaptersCount:42,versesCount:{1:22,2:13,3:26,4:21,5:27,6:30,7:21,8:22,9:35,10:22,11:20,12:25,13:28,14:22,15:35,16:22,17:16,18:21,19:29,20:29,21:34,22:30,23:17,24:25,25:6,26:14,27:23,28:28,29:25,30:31,31:40,32:22,33:33,34:37,35:16,36:33,37:24,38:41,39:30,40:32,41:26,42:17}},Ps:{chaptersCount:150,versesCount:{1:6,2:12,3:9,4:9,5:13,6:11,7:18,8:10,9:39,10:7,11:9,12:6,13:7,14:5,15:11,16:15,17:51,18:15,19:10,20:14,21:32,22:6,23:10,24:22,25:12,26:14,27:9,28:11,29:13,30:25,31:11,32:22,33:23,34:28,35:13,36:40,37:23,38:14,39:18,40:14,41:12,42:5,43:27,44:18,45:12,46:10,47:15,48:21,49:23,50:21,51:11,52:7,53:9,54:24,55:14,56:12,57:12,58:18,59:14,60:9,61:13,62:12,63:11,64:14,65:20,66:8,67:36,68:37,69:6,70:24,71:20,72:28,73:23,74:11,75:13,76:21,77:72,78:13,79:20,80:17,81:8,82:19,83:13,84:14,85:17,86:7,87:19,88:53,89:17,90:16,91:16,92:5,93:23,94:11,95:13,96:12,97:9,98:9,99:5,100:8,101:29,102:22,103:35,104:45,105:48,106:43,107:14,108:31,109:7,110:10,111:10,112:9,113:26,114:9,115:10,116:2,117:29,118:176,119:7,120:8,121:9,122:4,123:8,124:5,125:6,126:5,127:6,128:8,129:8,130:3,131:18,132:3,133:3,134:21,135:26,136:9,137:8,138:24,139:14,140:10,141:8,142:12,143:15,144:21,145:10,146:11,147:9,148:14,149:9,150:6}},Prov:{chaptersCount:31,versesCount:{1:33,2:22,3:35,4:27,5:23,6:35,7:27,8:36,9:18,10:32,11:31,12:28,13:25,14:35,15:33,16:33,17:28,18:24,19:29,20:30,21:31,22:29,23:35,24:34,25:28,26:28,27:27,28:28,29:27,30:33,31:31}},Eccl:{chaptersCount:12,versesCount:{1:18,2:26,3:22,4:17,5:19,6:12,7:29,8:17,9:18,10:20,11:10,12:14}},Song:{chaptersCount:8,versesCount:{1:17,2:17,3:11,4:16,5:16,6:12,7:14,8:14}},Isa:{chaptersCount:66,versesCount:{1:31,2:22,3:26,4:6,5:30,6:13,7:25,8:23,9:20,10:34,11:16,12:6,13:22,14:32,15:9,16:14,17:14,18:7,19:25,20:6,21:17,22:25,23:18,24:23,25:12,26:21,27:13,28:29,29:24,30:33,31:9,32:20,33:24,34:17,35:10,36:22,37:38,38:22,39:8,40:31,41:29,42:25,43:28,44:28,45:25,46:13,47:15,48:22,49:26,50:11,51:23,52:15,53:12,54:17,55:13,56:12,57:21,58:14,59:21,60:22,61:11,62:12,63:19,64:12,65:25,66:24}},Jer:{chaptersCount:52,versesCount:{1:19,2:37,3:25,4:31,5:31,6:30,7:34,8:23,9:25,10:25,11:23,12:17,13:27,14:22,15:21,16:21,17:27,18:23,19:15,20:18,21:14,22:30,23:40,24:10,25:38,26:24,27:22,28:17,29:32,30:24,31:40,32:44,33:26,34:22,35:19,36:32,37:21,38:28,39:18,40:16,41:18,42:22,43:13,4