
#include <platform.h>
#include "physical.h"
#include "tones.h"

NAMESPACE_BEGIN

int tone_freq[]= {
    425,    // Freq. 0
    350,    // Freq. 1
    440,    // Freq. 2
    410,    // Freq. 3
    400,    // Freq. 4
    450,    // Freq. 5
    480,    // Freq. 6
    620,    // Freq. 7
    330,    // Freq. 8 - unused
    440,    // Freq. 9 - doubled + unused, use 2 instead
    0,      // Freq. 10
    0,      // Freq. 11
    0,      // Freq. 12
    0,      // Freq. 13
    0,      // Freq. 14
    0       // Freq. 15, should always be 0
};

struct tone_pair tone_pair[TONE_MAX_PAIRS] = {
    // Freq Idx, Freq Idx, -dbm, -dbm
    { 15, 0,  255,  10 },         //  0: Europe
    { 1,  2,  13,   13 },         //  1: US/UK dial
    { 15, 4,  255,  16 },         //  2: UK busy
    { 1,  2,  13,   13 },         //  3: unused
    { 4,  5,  13,   13 },         //  4: UK Alert
    { 2,  6,  14,   14 },         //  5: US Alert
    { 5,  7,  8,    8  },         //  6: US Busy
    { 15, 2,  255,  19 },         //  7: US Call Waiting
    { 6,  7,  12,   12 },         //  8: Canada, HongKong busy
    { 15, 2,  255,  8  },         //  9: France
    { 15, 2,  255,  10 },         // 10: Brazil_440Hz
    { 15, 5,  255,  10 },         // 11: Turkey
    { 1,  5,  13,   13 },         // 12: South Africa dial
    { 15, 4,  255,  10 },         // 13: Brazil_400Hz
    { 15, 3,  255,  10 },         // 14: Brazil_410Hz
    { 15, 15, 255, 255 }
};

static class ph_event_tone_on tone_dialing_eu_pbx(0,0,false,250,250,250,250,250,1000);
static class ph_event_tone_on tone_dialing_special_eu_pbx(0,0,false,500,50);
static class ph_event_tone_on tone_calling_eu_pbx(0,500,true,1000,3000);
static class ph_event_tone_on tone_ringback_eu_pbx(PH_TONE_TYPE_IN,500,false,1000,3000);
static class ph_event_tone_on tone_busy_eu_pbx(0,500,false,500,500);
static class ph_event_tone_on tone_holding_eu_pbx(PH_TONE_TYPE_NO_RECV|0,2000,false,1000,3000);
static class ph_event_tone_on tone_fast_busy_eu_pbx(0,500,false,200,200);
static class ph_event_tone_on tone_callwaiting_eu_pbx(PH_TONE_TYPE_OFF_TRANSPARENT|0,0,false,100,4900);
static class ph_event_tone_on tone_holding_cisco_eu_pbx(PH_TONE_TYPE_NO_RECV|0,0,false,100,100,100,100,100,10000);
static class ph_event_tone_on tone_zipzip_eu_pbx(PH_TONE_TYPE_OFF_TRANSPARENT|0,500,false,100,100,100,0xffff);
static class ph_event_tone_on tone_intrusion_eu_pbx(PH_TONE_TYPE_OFF_TRANSPARENT|0,0,false,200,200,200,1400);
static class ph_event_tone_on tone_conference_eu_pbx(PH_TONE_TYPE_CONFERENCE|0,0,false,200,0xffff);
static class ph_event_tone_on tone_confirm_eu_pbx(0,500,false,100,100,100,100,100,1500);

static class ph_event_tone_on tone_dialing_eu_public(0,0,false);
static class ph_event_tone_on tone_dialing_special_eu_public(0,0,false,500,50);
static class ph_event_tone_on tone_calling_eu_public(0,500,true,1000,3000);
static class ph_event_tone_on tone_ringback_eu_public(PH_TONE_TYPE_IN,500,false,1000,3000);
static class ph_event_tone_on tone_busy_eu_public(0,500,false,500,500);
static class ph_event_tone_on tone_holding_eu_public(PH_TONE_TYPE_NO_RECV|0,2000,false,1000,3000);
static class ph_event_tone_on tone_fast_busy_eu_public(0,500,false,200,200);
static class ph_event_tone_on tone_callwaiting_eu_public(PH_TONE_TYPE_OFF_TRANSPARENT|0,0,false,100,4900);
static class ph_event_tone_on tone_holding_cisco_eu_public(PH_TONE_TYPE_NO_RECV|0,0,false,100,100,100,100,100,10000);
static class ph_event_tone_on tone_zipzip_eu_public(PH_TONE_TYPE_OFF_TRANSPARENT|0,500,false,100,100,100,0xffff);
static class ph_event_tone_on tone_intrusion_eu_public(PH_TONE_TYPE_OFF_TRANSPARENT|0,0,false,200,200,200,1400);
static class ph_event_tone_on tone_conference_eu_public(PH_TONE_TYPE_CONFERENCE|0,0,false,200,0xffff);
static class ph_event_tone_on tone_confirm_eu_public(0,500,false,100,100,100,100,100,1500);

static class ph_event_tone_on tone_dialing_us(1,0,false);
static class ph_event_tone_on tone_dialing_special_us(1,0,false,1250,250);
static class ph_event_tone_on tone_calling_us(5,500,true,2000,4000);
static class ph_event_tone_on tone_ringback_us(PH_TONE_TYPE_IN|5,500,false,2000,4000);
static class ph_event_tone_on tone_busy_us(6,500,false,500,500);
static class ph_event_tone_on tone_holding_us(PH_TONE_TYPE_NO_RECV|1,2000,false,2000,4000);
static class ph_event_tone_on tone_fast_busy_us(6,500,false,250,250);
static class ph_event_tone_on tone_callwaiting_us(PH_TONE_TYPE_OFF_TRANSPARENT|7,0,false,100,4900);
static class ph_event_tone_on tone_holding_cisco_us(PH_TONE_TYPE_NO_RECV|7,0,false,100,100,100,100,100,10000);
static class ph_event_tone_on tone_zipzip_us(PH_TONE_TYPE_OFF_TRANSPARENT|7,500,false,100,100,100,0xffff);
static class ph_event_tone_on tone_intrusion_us(PH_TONE_TYPE_OFF_TRANSPARENT|7,0,false,200,200,200,1400);
static class ph_event_tone_on tone_conference_us(PH_TONE_TYPE_CONFERENCE|7,0,false,200,0xffff);
static class ph_event_tone_on tone_confirm_us(7,500,false,100,100,100,100,100,1500);

static class ph_event_tone_on tone_dialing_uk(1,0,false);
static class ph_event_tone_on tone_dialing_special_uk(1,0,false,750,750);
static class ph_event_tone_on tone_calling_uk(4,500,true,400,200,390,2010);
static class ph_event_tone_on tone_ringback_uk(PH_TONE_TYPE_IN|4,500,false,400,200,390,2010);
static class ph_event_tone_on tone_busy_uk(2,500,false,375,375);
static class ph_event_tone_on tone_holding_uk(PH_TONE_TYPE_NO_RECV|4,2000,false,400,200,390,2010);
static class ph_event_tone_on tone_fast_busy_uk(2,500,false,400,350);
static class ph_event_tone_on tone_callwaiting_uk(PH_TONE_TYPE_OFF_TRANSPARENT|2,0,false,100,900,100,5000,100,900,100,0xffff);
static class ph_event_tone_on tone_holding_cisco_uk(PH_TONE_TYPE_NO_RECV|4,0,false,100,100,100,100,100,10000);
static class ph_event_tone_on tone_zipzip_uk(PH_TONE_TYPE_OFF_TRANSPARENT|4,500,false,100,100,100,0xffff);
static class ph_event_tone_on tone_intrusion_uk(PH_TONE_TYPE_OFF_TRANSPARENT|4,0,false,200,200,200,1400);
static class ph_event_tone_on tone_conference_uk(PH_TONE_TYPE_CONFERENCE|4,0,false,200,0xffff);
static class ph_event_tone_on tone_confirm_uk(0,500,false,100,100,100,100,100,1500);

static class ph_event_tone_on tone_dialing_ital_pbx(0,0,false);
static class ph_event_tone_on tone_dialing_special_ital_pbx(0,0,false,100,100,100,100,100,1500);
static class ph_event_tone_on tone_calling_ital_pbx(0,500,true,1000,4000);
static class ph_event_tone_on tone_ringback_ital_pbx(PH_TONE_TYPE_IN,500,false,1000,4000);
static class ph_event_tone_on tone_busy_ital_pbx(0,500,false,500,500);
static class ph_event_tone_on tone_holding_ital_pbx(PH_TONE_TYPE_NO_RECV|0,2000,false,1000,4000);
static class ph_event_tone_on tone_fast_busy_ital_pbx(0,500,false,100,100);
static class ph_event_tone_on tone_callwaiting_ital_pbx(PH_TONE_TYPE_OFF_TRANSPARENT|0,0,false,100,4900);
static class ph_event_tone_on tone_holding_cisco_ital_pbx(PH_TONE_TYPE_NO_RECV|0,0,false,100,100,100,100,100,10000);
static class ph_event_tone_on tone_zipzip_ital_pbx(PH_TONE_TYPE_OFF_TRANSPARENT|0,500,false,100,100,100,50000);
static class ph_event_tone_on tone_intrusion_ital_pbx(PH_TONE_TYPE_OFF_TRANSPARENT|0,0,false,200,200,200,1400);
static class ph_event_tone_on tone_conference_ital_pbx(PH_TONE_TYPE_CONFERENCE|0,0,false,200,9800);
static class ph_event_tone_on tone_confirm_ital_pbx(0,500,false,100,100,100,100,100,1500);

static class ph_event_tone_on tone_dialing_ital(0,0,false,200,200,600,1000);
static class ph_event_tone_on tone_dialing_special_ital(0,0,false,100,100,100,100,100,1500);
static class ph_event_tone_on tone_calling_ital(0,500,true,1000,4000);
static class ph_event_tone_on tone_ringback_ital(PH_TONE_TYPE_IN,500,false,1000,4000);
static class ph_event_tone_on tone_busy_ital(0,500,false,500,500);
static class ph_event_tone_on tone_holding_ital(PH_TONE_TYPE_NO_RECV|0,2000,false,1000,4000);
static class ph_event_tone_on tone_fast_busy_ital(0,500,false,200,200);
static class ph_event_tone_on tone_callwaiting_ital(PH_TONE_TYPE_OFF_TRANSPARENT|0,0,false,100,4900);
static class ph_event_tone_on tone_holding_cisco_ital(PH_TONE_TYPE_NO_RECV|0,0,false,100,100,100,100,100,10000);
static class ph_event_tone_on tone_zipzip_ital(PH_TONE_TYPE_OFF_TRANSPARENT|0,500,false,100,100,100,50000);
static class ph_event_tone_on tone_intrusion_ital(PH_TONE_TYPE_OFF_TRANSPARENT|0,0,false,200,200,200,1400);
static class ph_event_tone_on tone_conference_ital(PH_TONE_TYPE_CONFERENCE|0,0,false,200,9800);
static class ph_event_tone_on tone_confirm_ital(0,500,false,100,100,100,100,100,1500);

static class ph_event_tone_on tone_dialing_czech_pbx(0,0,false);
static class ph_event_tone_on tone_dialing_special_czech_pbx(0,0,false,170,160,170,160,170,160,660,660);
static class ph_event_tone_on tone_calling_czech_pbx(0,500,true,1000,4000);
static class ph_event_tone_on tone_ringback_czech_pbx(PH_TONE_TYPE_IN,500,false,1000,4000);
static class ph_event_tone_on tone_busy_czech_pbx(0,500,false,330,330);
static class ph_event_tone_on tone_holding_czech_pbx(PH_TONE_TYPE_NO_RECV|0,2000,false,1000,170,330,3500);
static class ph_event_tone_on tone_fast_busy_czech_pbx(0,500,false,170,160);
static class ph_event_tone_on tone_callwaiting_czech_pbx(PH_TONE_TYPE_OFF_TRANSPARENT|0,0,false,330,9000);
static class ph_event_tone_on tone_holding_cisco_czech_pbx(PH_TONE_TYPE_NO_RECV|0,0,false,100,100,100,100,100,10000);
static class ph_event_tone_on tone_zipzip_czech_pbx(PH_TONE_TYPE_OFF_TRANSPARENT|0,500,false,100,100,100,0xffff);
static class ph_event_tone_on tone_intrusion_czech_pbx(PH_TONE_TYPE_OFF_TRANSPARENT|0,0,false,200,200,200,1400);
static class ph_event_tone_on tone_conference_czech_pbx(PH_TONE_TYPE_CONFERENCE|0,0,false,200,0xffff);
static class ph_event_tone_on tone_confirm_czech_pbx(0,500,false,100,100,100,100,100,1500);

static class ph_event_tone_on tone_dialing_czech_public(0,0,false,330,330,660,660);
static class ph_event_tone_on tone_dialing_special_czech_public(0,0,false,170,160,170,160,170,160,660,660);
static class ph_event_tone_on tone_calling_czech_public(0,500,true,1000,4000);
static class ph_event_tone_on tone_ringback_czech_public(PH_TONE_TYPE_IN|0,500,false,1000,4000);
static class ph_event_tone_on tone_busy_czech_public(0,500,false,330,330);
static class ph_event_tone_on tone_holding_czech_public(PH_TONE_TYPE_NO_RECV|0,2000,false,1000,170,330,3500);
static class ph_event_tone_on tone_fast_busy_czech_public(0,500,false,165,165);
static class ph_event_tone_on tone_callwaiting_czech_public(PH_TONE_TYPE_OFF_TRANSPARENT|0,0,false,330,9000);
static class ph_event_tone_on tone_holding_cisco_czech_public(PH_TONE_TYPE_NO_RECV|0,0,false,100,100,100,100,100,10000);
static class ph_event_tone_on tone_zipzip_czech_public(PH_TONE_TYPE_OFF_TRANSPARENT|0,500,false,100,100,100,50000);
static class ph_event_tone_on tone_intrusion_czech_public(PH_TONE_TYPE_OFF_TRANSPARENT|0,0,false,200,200,200,1400);
static class ph_event_tone_on tone_conference_czech_public(PH_TONE_TYPE_CONFERENCE|0,0,false,200,0xffff);
static class ph_event_tone_on tone_confirm_czech_public(0,500,false,100,100,100,100,100,1500);

static class ph_event_tone_on tone_dialing_sweden(0,0,false);
static class ph_event_tone_on tone_dialing_special_sweden(0,0,false,320,10);
static class ph_event_tone_on tone_calling_sweden(0,500,true,990,4710);
static class ph_event_tone_on tone_ringback_sweden(PH_TONE_TYPE_IN|0,500,false,990,4710);
static class ph_event_tone_on tone_busy_sweden(0,500,false,250,250);
static class ph_event_tone_on tone_holding_sweden(PH_TONE_TYPE_NO_RECV|0,2000,false,990,4710);
static class ph_event_tone_on tone_fast_busy_sweden(0,500,false,250,750);
static class ph_event_tone_on tone_callwaiting_sweden(PH_TONE_TYPE_OFF_TRANSPARENT|0,500,false,200,500,200,0xffff);
static class ph_event_tone_on tone_holding_cisco_sweden(PH_TONE_TYPE_NO_RECV|0,0,false,100,100,100,100,100,10000);
static class ph_event_tone_on tone_zipzip_sweden(PH_TONE_TYPE_OFF_TRANSPARENT|0,500,false,100,100,100,0xffff);
static class ph_event_tone_on tone_intrusion_sweden(PH_TONE_TYPE_OFF_TRANSPARENT|0,0,false,200,200,200,1400);
static class ph_event_tone_on tone_conference_sweden(PH_TONE_TYPE_CONFERENCE|0,0,false,200,0xffff);
static class ph_event_tone_on tone_confirm_sweden(0,500,false,100,100,100,100,100,1500);

static class ph_event_tone_on tone_dialing_france(9,0,false);
static class ph_event_tone_on tone_dialing_special_france(9,0,false,750,750);
static class ph_event_tone_on tone_calling_france(9,500,true,1500,3500);
static class ph_event_tone_on tone_ringback_france(PH_TONE_TYPE_IN|9,500,false,1500,3500);
static class ph_event_tone_on tone_busy_france(9,500,false,500,500);
static class ph_event_tone_on tone_holding_france(PH_TONE_TYPE_NO_RECV|9,2000,false,1500,3500);
static class ph_event_tone_on tone_fast_busy_france(9,500,false,500,500);
static class ph_event_tone_on tone_callwaiting_france(PH_TONE_TYPE_OFF_TRANSPARENT|9,0,false,300,2500);
static class ph_event_tone_on tone_holding_cisco_france(PH_TONE_TYPE_NO_RECV|9,0,false,100,100,100,100,100,10000);
static class ph_event_tone_on tone_zipzip_france(PH_TONE_TYPE_OFF_TRANSPARENT|9,500,false,100,100,100,0xffff);
static class ph_event_tone_on tone_intrusion_france(PH_TONE_TYPE_OFF_TRANSPARENT|0,0,false,200,200,200,1400);
static class ph_event_tone_on tone_conference_france(PH_TONE_TYPE_CONFERENCE|0,0,false,200,0xffff);
static class ph_event_tone_on tone_confirm_france(0,500,false,100,100,100,100,100,1500);

static class ph_event_tone_on tone_dialing_swiss(0,0,false);
static class ph_event_tone_on tone_dialing_special_swiss(0,0,false,320,10);
static class ph_event_tone_on tone_calling_swiss(0,500,true,990,3990);
static class ph_event_tone_on tone_ringback_swiss(PH_TONE_TYPE_IN|0,500,false,990,3990);
static class ph_event_tone_on tone_busy_swiss(0,500,false,500,500);
static class ph_event_tone_on tone_holding_swiss(PH_TONE_TYPE_NO_RECV|0,2000,false,990,3990);
static class ph_event_tone_on tone_fast_busy_swiss(0,500,false,210,210);
static class ph_event_tone_on tone_callwaiting_swiss(PH_TONE_TYPE_OFF_TRANSPARENT|0,0,false,100,1000,100,0xffff);
static class ph_event_tone_on tone_holding_cisco_swiss(PH_TONE_TYPE_NO_RECV|0,0,false,100,100,100,100,100,10000);
static class ph_event_tone_on tone_zipzip_swiss(PH_TONE_TYPE_OFF_TRANSPARENT|0,500,false,100,100,100,0xffff);
static class ph_event_tone_on tone_intrusion_swiss(PH_TONE_TYPE_OFF_TRANSPARENT|0,0,false,200,200,200,1400);
static class ph_event_tone_on tone_conference_swiss(PH_TONE_TYPE_CONFERENCE|0,0,false,200,0xffff);
static class ph_event_tone_on tone_confirm_swiss(0,500,false,100,100,100,100,100,1500);

static class ph_event_tone_on tone_dialing_belgium(0,0,false);
static class ph_event_tone_on tone_dialing_special_belgium(0,0,false,1000,50);
static class ph_event_tone_on tone_calling_belgium(0,500,true,1000,3000);
static class ph_event_tone_on tone_ringback_belgium(PH_TONE_TYPE_IN|0,500,false,1000,4000);
static class ph_event_tone_on tone_busy_belgium(0,500,false,500,500);
static class ph_event_tone_on tone_holding_belgium(PH_TONE_TYPE_NO_RECV|0,2000,false,1000,4000);
static class ph_event_tone_on tone_fast_busy_belgium(0,500,false,250,250);
static class ph_event_tone_on tone_callwaiting_belgium(PH_TONE_TYPE_OFF_TRANSPARENT|0,0,false,100,1000,100,0xffff);
static class ph_event_tone_on tone_holding_cisco_belgium(PH_TONE_TYPE_NO_RECV|0,0,false,100,100,100,100,100,10000);
static class ph_event_tone_on tone_zipzip_belgium(PH_TONE_TYPE_OFF_TRANSPARENT|0,500,false,100,100,100,0xffff);
static class ph_event_tone_on tone_intrusion_belgium(PH_TONE_TYPE_OFF_TRANSPARENT|0,0,false,200,200,200,1400);
static class ph_event_tone_on tone_conference_belgium(PH_TONE_TYPE_CONFERENCE|0,0,false,200,0xffff);
static class ph_event_tone_on tone_confirm_belgium(0,500,false,100,100,100,100,100,1500);

static class ph_event_tone_on tone_dialing_netherlands(0,0,false);
static class ph_event_tone_on tone_dialing_special_netherlands(0,0,false,320,10);
static class ph_event_tone_on tone_calling_netherlands(0,500,true,990,3990);
static class ph_event_tone_on tone_ringback_netherlands(PH_TONE_TYPE_IN|0,500,false,990,3990);
static class ph_event_tone_on tone_busy_netherlands(0,500,false,500,500);
static class ph_event_tone_on tone_holding_netherlands(PH_TONE_TYPE_NO_RECV|0,2000,false,990,3990);
static class ph_event_tone_on tone_fast_busy_netherlands(0,500,false,250,250);
static class ph_event_tone_on tone_callwaiting_netherlands(PH_TONE_TYPE_OFF_TRANSPARENT|0,0,false,200,4700,200,4700,200,4700,200,0xffff);//should be repeated 5 times (instead of 4)
static class ph_event_tone_on tone_holding_cisco_netherlands(PH_TONE_TYPE_NO_RECV|0,0,false,100,100,100,100,100,10000);
static class ph_event_tone_on tone_zipzip_netherlands(PH_TONE_TYPE_OFF_TRANSPARENT|0,500,false,100,100,100,0xffff);
static class ph_event_tone_on tone_intrusion_netherlands(PH_TONE_TYPE_OFF_TRANSPARENT|0,0,false,200,200,200,1400);
static class ph_event_tone_on tone_conference_netherlands(PH_TONE_TYPE_CONFERENCE|0,0,false,200,0xffff);
static class ph_event_tone_on tone_confirm_netherlands(0,500,false,100,100,100,100,100,1500);

static class ph_event_tone_on tone_dialing_norway(0,0,false,600,20);
static class ph_event_tone_on tone_dialing_special_norway(0,0,false,320,20);
static class ph_event_tone_on tone_calling_norway(0,500,true,990,3990);
static class ph_event_tone_on tone_ringback_norway(PH_TONE_TYPE_IN|0,500,false,990,3990);
static class ph_event_tone_on tone_busy_norway(0,500,false,500,500);
static class ph_event_tone_on tone_holding_norway(PH_TONE_TYPE_NO_RECV|0,2000,false,990,3990);
static class ph_event_tone_on tone_fast_busy_norway(0,500,false,250,250);
static class ph_event_tone_on tone_callwaiting_norway(PH_TONE_TYPE_OFF_TRANSPARENT|0,0,false,100,1000,100,0xffff);
static class ph_event_tone_on tone_holding_cisco_norway(PH_TONE_TYPE_NO_RECV|0,0,false,100,100,100,100,100,10000);
static class ph_event_tone_on tone_zipzip_norway(PH_TONE_TYPE_OFF_TRANSPARENT|0,500,false,100,100,100,0xffff);
static class ph_event_tone_on tone_intrusion_norway(PH_TONE_TYPE_OFF_TRANSPARENT|0,0,false,200,200,200,1400);
static class ph_event_tone_on tone_conference_norway(PH_TONE_TYPE_CONFERENCE|0,0,false,200,0xffff);
static class ph_event_tone_on tone_confirm_norway(0,500,false,100,100,100,100,100,1500);

static class ph_event_tone_on tone_dialing_denmark(0,0,false);
static class ph_event_tone_on tone_dialing_special_denmark(0,0,false,320,10);
static class ph_event_tone_on tone_calling_denmark(0,500,true,990,3990);
static class ph_event_tone_on tone_ringback_denmark(PH_TONE_TYPE_IN|0,500,false,990,3990);
static class ph_event_tone_on tone_busy_denmark(0,500,false,250,250);
static class ph_event_tone_on tone_holding_denmark(PH_TONE_TYPE_NO_RECV|0,2000,false,990,3990);
static class ph_event_tone_on tone_fast_busy_denmark(PH_TONE_TYPE_SIT_ITU|0,500,false,250,250);	//	sit tone replaces standard tone on DECT boxes
static class ph_event_tone_on tone_callwaiting_denmark(PH_TONE_TYPE_OFF_TRANSPARENT|0,0,false,100,1000,100,0xffff);
static class ph_event_tone_on tone_holding_cisco_denmark(PH_TONE_TYPE_NO_RECV|0,0,false,100,100,100,100,100,10000);
static class ph_event_tone_on tone_zipzip_denmark(PH_TONE_TYPE_OFF_TRANSPARENT|0,500,false,100,100,100,0xffff);
static class ph_event_tone_on tone_intrusion_denmark(PH_TONE_TYPE_OFF_TRANSPARENT|0,0,false,200,200,200,1400);
static class ph_event_tone_on tone_conference_denmark(PH_TONE_TYPE_CONFERENCE|0,0,false,200,0xffff);
static class ph_event_tone_on tone_confirm_denmark(0,500,false,100,100,100,100,100,1500);

static class ph_event_tone_on tone_dialing_germany(0,0,false,200,300,200,300,200,800);
static class ph_event_tone_on tone_dialing_special_germany(0,0,false,320,10);
static class ph_event_tone_on tone_calling_germany(0,500,true,990,3990);
static class ph_event_tone_on tone_ringback_germany(PH_TONE_TYPE_IN|0,500,false,990,3990);
static class ph_event_tone_on tone_busy_germany(0,500,false,250,250);
static class ph_event_tone_on tone_holding_germany(PH_TONE_TYPE_NO_RECV|0,2000,false,990,3990);
static class ph_event_tone_on tone_fast_busy_germany(0,500,false,250,250);//same as busy
static class ph_event_tone_on tone_callwaiting_germany(PH_TONE_TYPE_OFF_TRANSPARENT|0,0,false,100,1900,100,1900,100,1900,100,0xffff);//should be repeated 5 times (instead of 4)
static class ph_event_tone_on tone_holding_cisco_germany(PH_TONE_TYPE_NO_RECV|0,0,false,100,100,100,100,100,10000);
static class ph_event_tone_on tone_zipzip_germany(PH_TONE_TYPE_OFF_TRANSPARENT|0,500,false,100,100,100,0xffff);
static class ph_event_tone_on tone_intrusion_germany(PH_TONE_TYPE_OFF_TRANSPARENT|0,0,false,200,200,200,1400);
static class ph_event_tone_on tone_conference_germany(PH_TONE_TYPE_CONFERENCE|0,0,false,200,0xffff);
static class ph_event_tone_on tone_confirm_germany(0,500,false,100,100,100,100,100,1500);

static class ph_event_tone_on tone_dialing_spain(0,0,false);
static class ph_event_tone_on tone_dialing_special_spain(0,0,false,1000,100);
static class ph_event_tone_on tone_calling_spain(0,500,true,1500,3000);
static class ph_event_tone_on tone_ringback_spain(PH_TONE_TYPE_IN|0,500,false,1500,3000);
static class ph_event_tone_on tone_busy_spain(0,500,false,200,200);
static class ph_event_tone_on tone_holding_spain(PH_TONE_TYPE_NO_RECV|0,2000,false,1500,3000);
static class ph_event_tone_on tone_fast_busy_spain(0,500,false,200,200,200,200,200,600);
static class ph_event_tone_on tone_callwaiting_spain(PH_TONE_TYPE_OFF_TRANSPARENT|0,0,false,200,200,200,3500);
static class ph_event_tone_on tone_holding_cisco_spain(PH_TONE_TYPE_NO_RECV|0,0,false,100,100,100,100,100,10000);
static class ph_event_tone_on tone_zipzip_spain(PH_TONE_TYPE_OFF_TRANSPARENT|0,500,false,100,100,100,0xffff);
static class ph_event_tone_on tone_intrusion_spain(PH_TONE_TYPE_OFF_TRANSPARENT|0,0,false,200,200,200,1400);
static class ph_event_tone_on tone_conference_spain(PH_TONE_TYPE_CONFERENCE|0,0,false,200,0xffff);
static class ph_event_tone_on tone_confirm_spain(0,500,false,100,100,100,100,100,1500);

static class ph_event_tone_on tone_dialing_finland(0,0,false,200,300,200,300,200,800);
static class ph_event_tone_on tone_dialing_special_finland(0,0,false,650,25);
static class ph_event_tone_on tone_calling_finland(0,500,true,990,3990);
static class ph_event_tone_on tone_ringback_finland(PH_TONE_TYPE_IN|0,500,false,990,3990);
static class ph_event_tone_on tone_busy_finland(0,500,false,330,330);
static class ph_event_tone_on tone_holding_finland(PH_TONE_TYPE_NO_RECV|0,2000,false,990,3990);
static class ph_event_tone_on tone_fast_busy_finland(0,500,false,250,250);
static class ph_event_tone_on tone_callwaiting_finland(PH_TONE_TYPE_OFF_TRANSPARENT|0,0,false,200,200,200,8000,200,200,200,0xffff);
static class ph_event_tone_on tone_holding_cisco_finland(PH_TONE_TYPE_NO_RECV|0,0,false,100,100,100,100,100,10000);
static class ph_event_tone_on tone_zipzip_finland(PH_TONE_TYPE_OFF_TRANSPARENT|0,500,false,100,100,100,0xffff);
static class ph_event_tone_on tone_intrusion_finland(PH_TONE_TYPE_OFF_TRANSPARENT|0,0,false,200,200,200,1400);
static class ph_event_tone_on tone_conference_finland(PH_TONE_TYPE_CONFERENCE|0,0,false,200,0xffff);
static class ph_event_tone_on tone_confirm_finland(0,500,false,100,100,100,100,100,1500);

static class ph_event_tone_on tone_dialing_austria(0,0,false);
static class ph_event_tone_on tone_dialing_special_austria(0,0,false,320,10);
static class ph_event_tone_on tone_calling_austria(0,500,true,990,3990);
static class ph_event_tone_on tone_ringback_austria(PH_TONE_TYPE_IN|0,500,false,990,3990);
static class ph_event_tone_on tone_busy_austria(0,500,false,330,330);
static class ph_event_tone_on tone_holding_austria(PH_TONE_TYPE_NO_RECV|0,2000,false,990,3990);
static class ph_event_tone_on tone_fast_busy_austria(0,500,false,150,150);
static class ph_event_tone_on tone_callwaiting_austria(PH_TONE_TYPE_OFF_TRANSPARENT|0,0,false,100,1000,100,0xffff);
static class ph_event_tone_on tone_holding_cisco_austria(PH_TONE_TYPE_NO_RECV|0,0,false,100,100,100,100,100,10000);
static class ph_event_tone_on tone_zipzip_austria(PH_TONE_TYPE_OFF_TRANSPARENT|0,500,false,100,100,100,0xffff);
static class ph_event_tone_on tone_intrusion_austria(PH_TONE_TYPE_OFF_TRANSPARENT|0,0,false,200,200,200,1400);
static class ph_event_tone_on tone_conference_austria(PH_TONE_TYPE_CONFERENCE|0,0,false,200,0xffff);
static class ph_event_tone_on tone_confirm_austria(0,500,false,100,100,100,100,100,1500);

static class ph_event_tone_on tone_dialing_ireland(0,0,false);
static class ph_event_tone_on tone_dialing_special_ireland(0,0,false,320,10);
static class ph_event_tone_on tone_calling_ireland(4,500,true,400,200,390,2010);
static class ph_event_tone_on tone_ringback_ireland(PH_TONE_TYPE_IN|4,500,false,400,200,390,2010);
static class ph_event_tone_on tone_busy_ireland(0,500,false,500,500);
static class ph_event_tone_on tone_holding_ireland(PH_TONE_TYPE_NO_RECV|0,2000,false,990,3990);
static class ph_event_tone_on tone_fast_busy_ireland(0,500,false,150,150);
static class ph_event_tone_on tone_callwaiting_ireland(PH_TONE_TYPE_OFF_TRANSPARENT|0,0,false,100,1000,100,0xffff);
static class ph_event_tone_on tone_holding_cisco_ireland(PH_TONE_TYPE_NO_RECV|0,0,false,100,100,100,100,100,10000);
static class ph_event_tone_on tone_zipzip_ireland(PH_TONE_TYPE_OFF_TRANSPARENT|0,500,false,100,100,100,0xffff);
static class ph_event_tone_on tone_intrusion_ireland(PH_TONE_TYPE_OFF_TRANSPARENT|0,0,false,200,200,200,1400);
static class ph_event_tone_on tone_conference_ireland(PH_TONE_TYPE_CONFERENCE|0,0,false,200,0xffff);
static class ph_event_tone_on tone_confirm_ireland(0,500,false,100,100,100,100,100,1500);

static class ph_event_tone_on tone_dialing_australia(0,0,false);
static class ph_event_tone_on tone_dialing_special_australia(0,0,false,320,10);
static class ph_event_tone_on tone_calling_australia(4,500,true,400,200,400,2000);
static class ph_event_tone_on tone_ringback_australia(PH_TONE_TYPE_IN|0,500,false,400,200,400,2000);
static class ph_event_tone_on tone_busy_australia(0,500,false,375,375);
static class ph_event_tone_on tone_holding_australia(PH_TONE_TYPE_NO_RECV|4,2000,false,400,200,390,2010);
static class ph_event_tone_on tone_fast_busy_australia(0,500,false,375,375);
static class ph_event_tone_on tone_callwaiting_australia(PH_TONE_TYPE_OFF_TRANSPARENT|0,0,false,200,200,200,0xffff);
static class ph_event_tone_on tone_holding_cisco_australia(PH_TONE_TYPE_NO_RECV|0,0,false,100,100,100,100,100,10000);
static class ph_event_tone_on tone_zipzip_australia(PH_TONE_TYPE_OFF_TRANSPARENT|0,500,false,100,100,100,0xffff);
static class ph_event_tone_on tone_intrusion_australia(PH_TONE_TYPE_OFF_TRANSPARENT|0,0,false,80,14720);
static class ph_event_tone_on tone_conference_australia(PH_TONE_TYPE_CONFERENCE|0,0,false,80,14720);
static class ph_event_tone_on tone_confirm_australia(0,500,false,100,100,100,100,100,1500);

static class ph_event_tone_on tone_dialing_newzealand(2,0,false);
static class ph_event_tone_on tone_dialing_special_newzealand(1,0,false,200,400,2010,390);
static class ph_event_tone_on tone_calling_newzealand(4,500,true,400,200,400,2000);
static class ph_event_tone_on tone_ringback_newzealand(PH_TONE_TYPE_IN|2,500,false,400,200,400,2000);
static class ph_event_tone_on tone_busy_newzealand(2,500,false,500,500);
static class ph_event_tone_on tone_holding_newzealand(PH_TONE_TYPE_NO_RECV|2,2000,false,500,500);
static class ph_event_tone_on tone_fast_busy_newzealand(2,500,false,250,250);
static class ph_event_tone_on tone_callwaiting_newzealand(PH_TONE_TYPE_OFF_TRANSPARENT|7,0,false,200,3000,200,3000,200,3000,200,0xffff);
static class ph_event_tone_on tone_holding_cisco_newzealand(PH_TONE_TYPE_NO_RECV|0,0,false,100,100,100,100,100,10000);
static class ph_event_tone_on tone_zipzip_newzealand(PH_TONE_TYPE_OFF_TRANSPARENT|0,500,false,100,100,100,0xffff);
static class ph_event_tone_on tone_intrusion_newzealand(PH_TONE_TYPE_OFF_TRANSPARENT|2,0,false,300,4000);
static class ph_event_tone_on tone_conference_newzealand(PH_TONE_TYPE_CONFERENCE|2,0,false,1000,14720,360,14720);
static class ph_event_tone_on tone_confirm_newzealand(2,500,false,100,100,100,100,100,1500);

static class ph_event_tone_on tone_dialing_malaysia(0,0,false);
static class ph_event_tone_on tone_dialing_special_malaysia(0,0,false);
static class ph_event_tone_on tone_calling_malaysia(0,500,true,400,200,400,2000);
static class ph_event_tone_on tone_ringback_malaysia(PH_TONE_TYPE_IN|0,500,false,400,200,400,2000);
static class ph_event_tone_on tone_busy_malaysia(0,500,false,500,500);
static class ph_event_tone_on tone_holding_malaysia(PH_TONE_TYPE_NO_RECV|0,2000,false,400,200,400,2000);
static class ph_event_tone_on tone_fast_busy_malaysia(0,500,false,500,500);
static class ph_event_tone_on tone_callwaiting_malaysia(PH_TONE_TYPE_OFF_TRANSPARENT|0,0,false,100,1000,100,0xffff);
static class ph_event_tone_on tone_holding_cisco_malaysia(PH_TONE_TYPE_NO_RECV|0,0,false,100,100,100,100,100,10000);
static class ph_event_tone_on tone_zipzip_malaysia(PH_TONE_TYPE_OFF_TRANSPARENT|0,500,false,100,100,100,0xffff);
static class ph_event_tone_on tone_intrusion_malaysia(PH_TONE_TYPE_OFF_TRANSPARENT|0,0,false,200,200);
static class ph_event_tone_on tone_conference_malaysia(PH_TONE_TYPE_CONFERENCE|0,0,false,200,0xffff);
static class ph_event_tone_on tone_confirm_malaysia(0,500,false,100,100,100,100,100,1500);

static class ph_event_tone_on tone_dialing_turkey(11,0,false);
static class ph_event_tone_on tone_dialing_special_turkey(11,0,false,1000,250);
static class ph_event_tone_on tone_calling_turkey(11,500,true,2000,4000);
static class ph_event_tone_on tone_ringback_turkey(PH_TONE_TYPE_IN|11,500,false,2000,4000);
static class ph_event_tone_on tone_busy_turkey(11,500,false,500,500);
static class ph_event_tone_on tone_holding_turkey(PH_TONE_TYPE_NO_RECV|11,2000,false,2000,4000);					// ? guess ?
static class ph_event_tone_on tone_fast_busy_turkey(11,500,false,200,200,200,200,200,200,600,200);
static class ph_event_tone_on tone_callwaiting_turkey(PH_TONE_TYPE_OFF_TRANSPARENT|11,0,false,200,600,200,8000);
static class ph_event_tone_on tone_holding_cisco_turkey(PH_TONE_TYPE_NO_RECV|11,0,false,100,100,100,100,100,10000);
static class ph_event_tone_on tone_zipzip_turkey(PH_TONE_TYPE_OFF_TRANSPARENT|11,500,false,100,100,100,0xffff);		// ? guess ?
static class ph_event_tone_on tone_intrusion_turkey(PH_TONE_TYPE_OFF_TRANSPARENT|11,0,false,200,200,200,1400);		// ? guess ?
static class ph_event_tone_on tone_conference_turkey(PH_TONE_TYPE_CONFERENCE|11,0,false,200,0xffff);				// ? guess ?
static class ph_event_tone_on tone_confirm_turkey(11,500,false,40,40);

static class ph_event_tone_on tone_dialing_russia(0,0,false);
static class ph_event_tone_on tone_dialing_special_russia(0,0,false,500,50);										// ? guess ?
static class ph_event_tone_on tone_calling_russia(0,500,true,800,3200);
static class ph_event_tone_on tone_ringback_russia(PH_TONE_TYPE_IN|0,500,false,800,3200);
static class ph_event_tone_on tone_busy_russia(0,500,false,400,400);
static class ph_event_tone_on tone_holding_russia(PH_TONE_TYPE_NO_RECV|0,2000,false,800,3200);						// ? guess ?
static class ph_event_tone_on tone_fast_busy_russia(0,500,false,200,200);											// ? guess ?
static class ph_event_tone_on tone_callwaiting_russia(PH_TONE_TYPE_OFF_TRANSPARENT|0,0,false,200,2000);				// ? guess ?
static class ph_event_tone_on tone_holding_cisco_russia(PH_TONE_TYPE_NO_RECV|0,0,false,100,100,100,100,100,10000);
static class ph_event_tone_on tone_zipzip_russia(PH_TONE_TYPE_OFF_TRANSPARENT|0,500,false,100,100,100,0xffff);
static class ph_event_tone_on tone_intrusion_russia(PH_TONE_TYPE_OFF_TRANSPARENT|0,0,false,200,200,200,1400);		// ? guess ?
static class ph_event_tone_on tone_conference_russia(PH_TONE_TYPE_CONFERENCE|0,0,false,200,0xffff);					// ? guess ?
static class ph_event_tone_on tone_confirm_russia(0,500,false,100,100,100,100,100,1500);							// ? guess ?

static class ph_event_tone_on tone_dialing_south_africa(12,0,false);
static class ph_event_tone_on tone_dialing_special_south_africa(12,0,false,260,260,32760,40);
static class ph_event_tone_on tone_calling_south_africa(12,500,true,400,200,400,2000);
static class ph_event_tone_on tone_ringback_south_africa(PH_TONE_TYPE_IN|12,500,false,400,200,400,2000);
static class ph_event_tone_on tone_busy_south_africa(2,500,false,500,500);
static class ph_event_tone_on tone_holding_south_africa(PH_TONE_TYPE_NO_RECV|12,2000,false,400,200,400,2000);			// ? guess ?
static class ph_event_tone_on tone_fast_busy_south_africa(2,500,false,250,250);
static class ph_event_tone_on tone_callwaiting_south_africa(PH_TONE_TYPE_OFF_TRANSPARENT|12,0,false,400,4000);
static class ph_event_tone_on tone_holding_cisco_south_africa(PH_TONE_TYPE_NO_RECV|0,0,false,100,100,100,100,100,10000);// ? guess ?
static class ph_event_tone_on tone_zipzip_south_africa(PH_TONE_TYPE_OFF_TRANSPARENT|0,500,false,100,100,100,0xffff);	// ? guess ?
static class ph_event_tone_on tone_intrusion_south_africa(PH_TONE_TYPE_OFF_TRANSPARENT|2,0,false,150,250,150,1450);
static class ph_event_tone_on tone_conference_south_africa(PH_TONE_TYPE_CONFERENCE|2,0,false,200,0xffff);				// ? guess ?
static class ph_event_tone_on tone_confirm_south_africa(2,500,false,100,100,100,100,100,1500);							// ? guess ?

static class ph_event_tone_on tone_dialing_brazil(0,0,false);
static class ph_event_tone_on tone_dialing_special_brazil(0,0,false,500,50);										// ? guess ?
static class ph_event_tone_on tone_calling_brazil(0,500,true,1000,4000);
static class ph_event_tone_on tone_ringback_brazil(PH_TONE_TYPE_IN|0,500,false,1000,4000);
static class ph_event_tone_on tone_busy_brazil(0,500,false,250,250);
static class ph_event_tone_on tone_holding_brazil(PH_TONE_TYPE_NO_RECV|0,2000,false,1000,4000);						// ? guess ?
static class ph_event_tone_on tone_fast_busy_brazil(0,500,false,120,140);
static class ph_event_tone_on tone_callwaiting_brazil(PH_TONE_TYPE_OFF_TRANSPARENT|0,0,false,60,250,60,5000);		// ? guess ?
static class ph_event_tone_on tone_holding_cisco_brazil(PH_TONE_TYPE_NO_RECV|0,0,false,100,100,100,100,100,10000);
static class ph_event_tone_on tone_zipzip_brazil(PH_TONE_TYPE_OFF_TRANSPARENT|0,500,false,100,100,100,0xffff);
static class ph_event_tone_on tone_intrusion_brazil(PH_TONE_TYPE_OFF_TRANSPARENT|0,0,false,200,200,200,1400);		// ? guess ?
static class ph_event_tone_on tone_conference_brazil(PH_TONE_TYPE_CONFERENCE|0,0,false,200,0xffff);					// ? guess ?
static class ph_event_tone_on tone_confirm_brazil(0,500,false,100,100,100,2000);

const char * tone_title[PHONE_MAX_TONES+1] = {
    "EUROPE-PBX",
    "EUROPE-PUBLIC",
    "US",
    "UK",
    "ITALY-PBX",
    "ITALY-PUBLIC",
    "CZECH-PBX",
    "CZECH-PUBLIC",
    "SWEDEN",
    "FRANCE",
    "SWISS",
    "BELGIUM",
    "NETHERLANDS",
    "NORWAY",
    "DENMARK",
    "GERMANY",
    "SPAIN",
    "FINLAND",
    "AUSTRIA",
    "IRELAND",
    "AUSTRALIA",
    "NEWZEALAND",
    "MALAYSIA",
	"TURKEY",
	"RUSSIA",
	"SOUTH AFRICA",
	"BRAZIL",
    0
};

const char * tone_num[PHONE_MAX_TONES+1] = {
    "0",
    "1",
    "2",
    "3",
    "10",
    "4",
    "5",
    "6",
    "7",
    "8",
    "9",
    "11",
    "12",
    "13",
    "14",
    "15",
    "16",
    "17",
    "18",
    "19",
    "20",
    "21",
    "22",
    "23",
    "24",
    "25",
    "26",
    0
};

struct tones tone_table[PHONE_MAX_TONES] = {
    {
        &tone_dialing_eu_pbx,
        &tone_dialing_special_eu_pbx,
        &tone_calling_eu_pbx,
        &tone_ringback_eu_pbx,
        &tone_busy_eu_pbx,
        &tone_holding_eu_pbx,
        &tone_fast_busy_eu_pbx,
        &tone_callwaiting_eu_pbx,
        &tone_holding_cisco_eu_pbx,
        &tone_zipzip_eu_pbx,
        &tone_intrusion_eu_pbx,
        &tone_conference_eu_pbx,
        &tone_confirm_eu_pbx
    },
    {
        &tone_dialing_eu_public,
        &tone_dialing_special_eu_public,
        &tone_calling_eu_public,
        &tone_ringback_eu_public,
        &tone_busy_eu_public,
        &tone_holding_eu_public,
        &tone_fast_busy_eu_public,
        &tone_callwaiting_eu_public,
        &tone_holding_cisco_eu_public,
        &tone_zipzip_eu_public,
        &tone_intrusion_eu_public,
        &tone_conference_eu_public,
        &tone_confirm_eu_public
    },
    {
        &tone_dialing_us,
        &tone_dialing_special_us,
        &tone_calling_us,
        &tone_ringback_us,
        &tone_busy_us,
        &tone_holding_us,
        &tone_fast_busy_us,
        &tone_callwaiting_us,
        &tone_holding_cisco_us,
        &tone_zipzip_us,
        &tone_intrusion_us,
        &tone_conference_us,
        &tone_confirm_us
    },
    {
        &tone_dialing_uk,
        &tone_dialing_special_uk,
        &tone_calling_uk,
        &tone_ringback_uk,
        &tone_busy_uk,
        &tone_holding_uk,
        &tone_fast_busy_uk,
        &tone_callwaiting_uk,
        &tone_holding_cisco_uk,
        &tone_zipzip_uk,
        &tone_intrusion_uk,
        &tone_conference_uk,
        &tone_confirm_uk
    },
    {
        &tone_dialing_ital,
        &tone_dialing_special_ital,
        &tone_calling_ital,
        &tone_ringback_ital,
        &tone_busy_ital,
        &tone_holding_ital,
        &tone_fast_busy_ital,
        &tone_callwaiting_ital,
        &tone_holding_cisco_ital,
        &tone_zipzip_ital,
        &tone_intrusion_ital,
        &tone_conference_ital,
        &tone_confirm_ital
    },
    {
        &tone_dialing_czech_pbx,
        &tone_dialing_special_czech_pbx,
        &tone_calling_czech_pbx,
        &tone_ringback_czech_pbx,
        &tone_busy_czech_pbx,
        &tone_holding_czech_pbx,
        &tone_fast_busy_czech_pbx,
        &tone_callwaiting_czech_pbx,
        &tone_holding_cisco_czech_pbx,
        &tone_zipzip_czech_pbx,
        &tone_intrusion_czech_pbx,
        &tone_conference_czech_pbx,
        &tone_confirm_czech_pbx
    },
    {
        &tone_dialing_czech_public,
        &tone_dialing_special_czech_public,
        &tone_calling_czech_public,
        &tone_ringback_czech_public,
        &tone_busy_czech_public,
        &tone_holding_czech_public,
        &tone_fast_busy_czech_public,
        &tone_callwaiting_czech_public,
        &tone_holding_cisco_czech_public,
        &tone_zipzip_czech_public,
        &tone_intrusion_czech_public,
        &tone_conference_czech_public,
        &tone_confirm_czech_public
    },
    {
        &tone_dialing_sweden,
        &tone_dialing_special_sweden,
        &tone_calling_sweden,
        &tone_ringback_sweden,
        &tone_busy_sweden,
        &tone_holding_sweden,
        &tone_fast_busy_sweden,
        &tone_callwaiting_sweden,
        &tone_holding_cisco_sweden,
        &tone_zipzip_sweden,
        &tone_intrusion_sweden,
        &tone_conference_sweden,
        &tone_confirm_sweden
    },
    {
        &tone_dialing_france,
        &tone_dialing_special_france,
        &tone_calling_france,
        &tone_ringback_france,
        &tone_busy_france,
        &tone_holding_france,
        &tone_fast_busy_france,
        &tone_callwaiting_france,
        &tone_holding_cisco_france,
        &tone_zipzip_france,
        &tone_intrusion_france,
        &tone_conference_france,
        &tone_confirm_france
    },
    {
        &tone_dialing_swiss,
        &tone_dialing_special_swiss,
        &tone_calling_swiss,
        &tone_ringback_swiss,
        &tone_busy_swiss,
        &tone_holding_swiss,
        &tone_fast_busy_swiss,
        &tone_callwaiting_swiss,
        &tone_holding_cisco_swiss,
        &tone_zipzip_swiss,
        &tone_intrusion_swiss,
        &tone_conference_swiss,
        &tone_confirm_swiss
    },
    {
        &tone_dialing_ital_pbx,
        &tone_dialing_special_ital_pbx,
        &tone_calling_ital_pbx,
        &tone_ringback_ital_pbx,
        &tone_busy_ital_pbx,
        &tone_holding_ital_pbx,
        &tone_fast_busy_ital_pbx,
        &tone_callwaiting_ital_pbx,
        &tone_holding_cisco_ital_pbx,
        &tone_zipzip_ital_pbx,
        &tone_intrusion_ital_pbx,
        &tone_conference_ital_pbx,
        &tone_confirm_ital_pbx
    },
        {
        &tone_dialing_belgium,
        &tone_dialing_special_belgium,
        &tone_calling_belgium,
        &tone_ringback_belgium,
        &tone_busy_belgium,
        &tone_holding_belgium,
        &tone_fast_busy_belgium,
        &tone_callwaiting_belgium,
        &tone_holding_cisco_belgium,
        &tone_zipzip_belgium,
        &tone_intrusion_belgium,
        &tone_conference_belgium,
        &tone_confirm_belgium
    },
    {
        &tone_dialing_netherlands,
        &tone_dialing_special_netherlands,
        &tone_calling_netherlands,
        &tone_ringback_netherlands,
        &tone_busy_netherlands,
        &tone_holding_netherlands,
        &tone_fast_busy_netherlands,
        &tone_callwaiting_netherlands,
        &tone_holding_cisco_netherlands,
        &tone_zipzip_netherlands,
        &tone_intrusion_netherlands,
        &tone_conference_netherlands,
        &tone_confirm_netherlands
    },
    {
        &tone_dialing_norway,
        &tone_dialing_special_norway,
        &tone_calling_norway,
        &tone_ringback_norway,
        &tone_busy_norway,
        &tone_holding_norway,
        &tone_fast_busy_norway,
        &tone_callwaiting_norway,
        &tone_holding_cisco_norway,
        &tone_zipzip_norway,
        &tone_intrusion_norway,
        &tone_conference_norway,
        &tone_confirm_norway
    },
    {
        &tone_dialing_denmark,
        &tone_dialing_special_denmark,
        &tone_calling_denmark,
        &tone_ringback_denmark,
        &tone_busy_denmark,
        &tone_holding_denmark,
        &tone_fast_busy_denmark,
        &tone_callwaiting_denmark,
        &tone_holding_cisco_denmark,
        &tone_zipzip_denmark,
        &tone_intrusion_denmark,
        &tone_conference_denmark,
        &tone_confirm_denmark
    },
    {
        &tone_dialing_germany,
        &tone_dialing_special_germany,
        &tone_calling_germany,
        &tone_ringback_germany,
        &tone_busy_germany,
        &tone_holding_germany,
        &tone_fast_busy_germany,
        &tone_callwaiting_germany,
        &tone_holding_cisco_germany,
        &tone_zipzip_germany,
        &tone_intrusion_germany,
        &tone_conference_germany,
        &tone_confirm_germany
    },
    {
        &tone_dialing_spain,
        &tone_dialing_special_spain,
        &tone_calling_spain,
        &tone_ringback_spain,
        &tone_busy_spain,
        &tone_holding_spain,
        &tone_fast_busy_spain,
        &tone_callwaiting_spain,
        &tone_holding_cisco_spain,
        &tone_zipzip_spain,
        &tone_intrusion_spain,
        &tone_conference_spain,
        &tone_confirm_spain
    },
    {
        &tone_dialing_finland,
        &tone_dialing_special_finland,
        &tone_calling_finland,
        &tone_ringback_finland,
        &tone_busy_finland,
        &tone_holding_finland,
        &tone_fast_busy_finland,
        &tone_callwaiting_finland,
        &tone_holding_cisco_finland,
        &tone_zipzip_finland,
        &tone_intrusion_finland,
        &tone_conference_finland,
        &tone_confirm_finland
    },
    {
        &tone_dialing_austria,
        &tone_dialing_special_austria,
        &tone_calling_austria,
        &tone_ringback_austria,
        &tone_busy_austria,
        &tone_holding_austria,
        &tone_fast_busy_austria,
        &tone_callwaiting_austria,
        &tone_holding_cisco_austria,
        &tone_zipzip_austria,
        &tone_intrusion_austria,
        &tone_conference_austria,
        &tone_confirm_austria
    },
    {
        &tone_dialing_ireland,
        &tone_dialing_special_ireland,
        &tone_calling_ireland,
        &tone_ringback_ireland,
        &tone_busy_ireland,
        &tone_holding_ireland,
        &tone_fast_busy_ireland,
        &tone_callwaiting_ireland,
        &tone_holding_cisco_ireland,
        &tone_zipzip_ireland,
        &tone_intrusion_ireland,
        &tone_conference_ireland,
        &tone_confirm_ireland
    },
    {
        &tone_dialing_australia,
        &tone_dialing_special_australia,
        &tone_calling_australia,
        &tone_ringback_australia,
        &tone_busy_australia,
        &tone_holding_australia,
        &tone_fast_busy_australia,
        &tone_callwaiting_australia,
        &tone_holding_cisco_australia,
        &tone_zipzip_australia,
        &tone_intrusion_australia,
        &tone_conference_australia,
        &tone_confirm_australia
    },
    {
        &tone_dialing_newzealand,
        &tone_dialing_special_newzealand,
        &tone_calling_newzealand,
        &tone_ringback_newzealand,
        &tone_busy_newzealand,
        &tone_holding_newzealand,
        &tone_fast_busy_newzealand,
        &tone_callwaiting_newzealand,
        &tone_holding_cisco_newzealand,
        &tone_zipzip_newzealand,
        &tone_intrusion_newzealand,
        &tone_conference_newzealand,
        &tone_confirm_newzealand
    },
    {
        &tone_dialing_malaysia,
        &tone_dialing_special_malaysia,
        &tone_calling_malaysia,
        &tone_ringback_malaysia,
        &tone_busy_malaysia,
        &tone_holding_malaysia,
        &tone_fast_busy_malaysia,
        &tone_callwaiting_malaysia,
        &tone_holding_cisco_malaysia,
        &tone_zipzip_malaysia,
        &tone_intrusion_malaysia,
        &tone_conference_malaysia,
        &tone_confirm_malaysia
    },
    {
        &tone_dialing_turkey,
        &tone_dialing_special_turkey,
        &tone_calling_turkey,
        &tone_ringback_turkey,
        &tone_busy_turkey,
        &tone_holding_turkey,
        &tone_fast_busy_turkey,
        &tone_callwaiting_turkey,
        &tone_holding_cisco_turkey,
        &tone_zipzip_turkey,
        &tone_intrusion_turkey,
        &tone_conference_turkey,
        &tone_confirm_turkey
    },
    {
        &tone_dialing_russia,
        &tone_dialing_special_russia,
        &tone_calling_russia,
        &tone_ringback_russia,
        &tone_busy_russia,
        &tone_holding_russia,
        &tone_fast_busy_russia,
        &tone_callwaiting_russia,
        &tone_holding_cisco_russia,
        &tone_zipzip_russia,
        &tone_intrusion_russia,
        &tone_conference_russia,
        &tone_confirm_russia
    },
    {
        &tone_dialing_south_africa,
        &tone_dialing_special_south_africa,
        &tone_calling_south_africa,
        &tone_ringback_south_africa,
        &tone_busy_south_africa,
        &tone_holding_south_africa,
        &tone_fast_busy_south_africa,
        &tone_callwaiting_south_africa,
        &tone_holding_cisco_south_africa,
        &tone_zipzip_south_africa,
        &tone_intrusion_south_africa,
        &tone_conference_south_africa,
        &tone_confirm_south_africa
    },
    {
        &tone_dialing_brazil,
        &tone_dialing_special_brazil,
        &tone_calling_brazil,
        &tone_ringback_brazil,
        &tone_busy_brazil,
        &tone_holding_brazil,
        &tone_fast_busy_brazil,
        &tone_callwaiting_brazil,
        &tone_holding_cisco_brazil,
        &tone_zipzip_brazil,
        &tone_intrusion_brazil,
        &tone_conference_brazil,
        &tone_confirm_brazil
    },
};

NAMESPACE_END
